Разработка программы создания вектора
Описание алгоритма решения задачи графическим способом. Ввод элементов исходного массива в цикле. Нахождение определённых элементов. Сортировка элементов с помощью пузырькового метода. Разработка программы на языке Pascal. Поиск наибольшего элемента.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 15.01.2014 |
Размер файла | 123,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
1. Постановка задачи
Дана матрица A (N, M).
1. В массив C записать все элементы из матрицы A, неравные числу, введённому с клавиатуры, и подсчитать число таких элементов.
2. Расположить элементы массива C, стоящие на чётных местах по убыванию.
Для отладки программы элементы массива сформировать с помощью генератора случайных чисел.
2. Описание алгоритма решения задачи графическим способом
Размещено на http://www.allbest.ru/
Укрупненная схема алгоритма
3. Детализация укрупненной схемы алгоритма
В программе решаются следующие задачи:
1. Ввод элементов массива.
2. Нахождение определённых элементов.
3. Сортировка элементов.
4. Вывод отсортированного массива.
4. Ввод элементов исходного массива
Ввод элементов массива выполняется в цикле. На каждом шаге генерируется и сразу выводится значение элемента массива. Фрагмент блок-схемы:
5. Нахождение определённых элементов
Для того чтобы найти элемент, неравный введённому значению с клавиатуры, мы используем два цикла со вложенным условием, через которое пройдут все элементы массива. При прохождении с помощью арифметического блока высчитывается количество найденных элементов.
Фрагмент блок-схемы
6. Сортировка элементов
Сортировка массива производится с помощью пузырькового метода.
Алгоритм состоит из повторяющихся проходов по сортируемому массиву. За каждый проход элементы последовательно сравниваются попарно и, если порядок в паре неверный, выполняется обмен элементов. Проходы по массиву повторяются N-1 раз или до тех пор, пока на очередном проходе не окажется, что обмены больше не нужны, что означает - массив отсортирован. При каждом проходе алгоритма по внутреннему циклу, очередной наибольший элемент массива ставится на своё место в конце массива рядом с предыдущим «наибольшим элементом», а наименьший элемент перемещается на одну позицию к началу массива («всплывает» до нужной позиции как пузырёк в воде, отсюда и название алгоритма).
7. Разработка программы на языке Pascal
Программа начинается со служебного слова Program, после которого следует заголовок программы.
Далее включаем раздел Uses для использования модуля CRT, который применяется для управления работой экрана в текстовом режиме.
После названия программы и идентификации используемых модулей следует раздел констант (const). В разделе констант описана константа n, хранящая размер массива.
В разделе переменных var описан целочисленный массив под именем a и целочисленная переменная i - счетчик цикла.
Тело программы или раздел операторов начинается со слова begin и заканчивается end. В этом разделе описываем действия, которые должна выполнить программа согласно выбранному алгоритму.
Так как в программе подразумевается ввод данных с экрана и вывод полученных результатов на экран, перед началом программы его необходимо очистить от ненужной информации. Это проделывает процедура clrscr, которая описана в модуле Crt.
Перед первым обращением к функции random необходимо с помощью вызова процедуры randomize инициализировать программный генератор случайных чисел, иначе при каждом запуске программы датчик будет выдавать одни и те же числа.
8. Описание блоков укрупненной схемы алгоритма на языке Pascal
Для того, чтобы прокомментировать, что вначале будет выведен исходный массив на экран, используем оператор writeln ('Заданный массив: '). Рассмотренный фрагмент блок-схемы для реализации ввода элементов двумерного массива на языке Pascal будет представлен в следующем виде:
writeln ('Заданный массив: ');
for i:=1 to n do begin
for j:=1 to m do begin
a [i, j]:=random(10) - 3;
write (a[i, j]:3);
end;
writeln;
end;
Запись write (a[i, j]:3) обозначает, что для вывода каждого элемента на экран отводится 3 позиции.
Следующий оператор random с параметрами генерирует случайно взятое число и помещает его в текущий элемент массива. Так мы можем быстро заполнить массив интересующим нас диапазоном чисел.
Добавим в конце оператор writeln без параметров для более удобного восприятия информации с экрана.
Сортировка массива
Для выполнения этой задачи мы используем два цикла. Первый цикл for i:=1 to n do необходим для повторения сортировки достаточное количество раз. Следующий цикл for j:=2 to k-3 do необходим для переключения элементов выбранного столбца по условию задания. Затем следует условие, которое сравнивает текущий и следующий элементы друг с другом, затем, при положительном результате сравнения переходит на подпрограмму:
temp:=c[j];
c[j]:=c [j+2];
c [j+2]:=temp;
здесь происходит переприсвоение переменных, смена мест друг с другом.
Фрагмент программы:
for i:=1 to n do
for j:=2 to k-3 do
if (c[j]<c [j+2]) and (j mod 2=0) then begin
temp:=c[j];
c[j]:=c [j+2];
c [j+2]:=temp;
end;
9. Нахождение определённых элементов
Для нахождения наибольшего элемента мы используем программу:
write ('Введите число для сравнения: '); readln(temp);
k:=1;
for i:=1 to n do
for j:=1 to m do
if a [i, j]<>temp then begin
c[k]:=a [i, j];
k:=k+1;
end;
writeln ('Массив С: ');
for i:=1 to k-1 do
write (c[i]:3);
writeln;
Вывод элементов массива
В данном блоке мы выводим переменные с помощью встроенных функций Pascal. Фрагмент программы:
writeln ('Отсортированный массив: ');
for i:=1 to n do begin
for j:=1 to m do
write (a[i, j]:3);
writeln;
end;
где write(…) - вывод элементов массива в строку с указанием количества занимаемых позиций (в данном случае занимаемых позиций нет).
10. Листинг программы
Program xxx;
uses crt;
var
i, j, n, m, k, temp:integer;
a:array [1.. 10,1..10] of integer;
c:array [1..100] of integer;
begin
randomize; clrscr;
write ('Введите количество строк: '); readln(n);
write ('Введите количество столбцов: '); readln(m);
writeln ('Заданный массив: ');
for i:=1 to n do begin
for j:=1 to m do begin
a [i, j]:=random(10) - 3;
write (a[i, j]:3);
end;
writeln;
end;
writeln ('Задание 1');
write ('Введите число для сравнения: '); readln(temp);
k:=1;
for i:=1 to n do
for j:=1 to m do
if a [i, j]<>temp then begin
c[k]:=a [i, j];
k:=k+1;
end;
writeln ('Массив С: ');
for i:=1 to k-1 do
write (c[i]:3);
writeln;
writeln ('Количество элементов в массиве: ', k-1);
writeln;
writeln ('Задание 2');
for i:=1 to n do
for j:=2 to k-3 do
if (c[j]<c [j+2]) and (j mod 2=0) then begin
temp:=c[j];
c [j+2]:=temp;
end;
writeln ('Отсортированный массив: ');
for i:=1 to k-1 do
readkey;
end.
11. Тестирование программы
Ниже приведены результаты выполнения программы на примере различных входных данных:
Список литературы
алгоритм пузырьковый pascal вектор
1. Иванов А.Ф., Потапова О.Н., Салихова Г.Л. Основы алгоритмического языка Pascal. - Альметьевск: тип. АлНИ, 2007 Г.
2. Павловская Т.А. Паскаль. Программирование на языке высоко уровня.-СПб.: - Питер, 2004 г.
3. Немнюгин С.А. Turbo Pascal: учебник - СПб.: - Питер, 2001 г.
4. Окулов С.М. Основы программирования.-Москва, 2008 г.
5. Попов В., «Паскаль и Дельфи. Самоучитель» - СПб.: - «Питер», 2003 г.
Размещено на Allbest.ru
Подобные документы
Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.
курсовая работа [115,5 K], добавлен 22.05.2010Описание алгоритма решения задачи графическим способом. Вывод элементов массива. Описание блоков укрупненной схемы алгоритма на языке Pascal. Листинг программы, а также ее тестирование. Результат выполнения c помощью ввода различных входных данных.
контрольная работа [150,4 K], добавлен 03.05.2014Описание алгоритма решения задачи по вычислению суммы элементов строк матрицы с использованием графического способа. Детализация укрупненной схемы алгоритма и разработка программы для решения задачи в среде Turbo Pascal. Листинг и тестирование программы.
курсовая работа [446,0 K], добавлен 19.06.2014Выведение значения элементов массива, которые удовлетворяют неравенству. Подсчет количества отрицательных элементов массива. Изменение исходного массива. Тестирование программы. Проверка её работоспособности. Реакция программы на сообщение об ошибке.
лабораторная работа [1,3 M], добавлен 23.11.2014Особенности поиска среднеарифметического значения элементов массива. Общая характеристика проблем разработки в среде Turbo Pascal программы упорядочивания массива по возрастанию. Рассмотрение основных этапов разработки программы на языке PASCAL.
курсовая работа [896,7 K], добавлен 18.05.2014Разработка программного обеспечения заданной информационной системы. Описание алгоритма и математического метода решения задачи. Этапы формирования и реализации программы, ее листинг и оценка функциональности. Разработка инструкции пользователя.
курсовая работа [223,9 K], добавлен 23.06.2015Разработка программы на языке Pascal. Описание переменных. Действия, которые должна выполнить программа согласно выбранного алгоритма. Детализация графической части программы. Листинг и тестирование программы. Вывод массива данных на экран монитора.
контрольная работа [360,4 K], добавлен 13.06.2012Подсчет количества отрицательных элементов массива. Изменение исходного массива перемещением всех его положительных элементов в начало с исходным порядком их следования. Вывод на дисплей количества перемещенных элементов. Алгоритм и код программы.
лабораторная работа [946,5 K], добавлен 23.11.2014Анализ эффективности методов сортировки данных в языке Turbo Pascal. Разработка эскизного и технического проекта программы. Сортировка без и с использованием дополнительной памяти, за исключением небольшого стека (массива). Сортировка связанных списков.
курсовая работа [359,0 K], добавлен 23.05.2012Вычисление суммы положительных элементов массива. Упорядочивание элементов массива по убыванию. Решение задачи с помощью алгоритма, реализованного в среде Microsoft Visual 2008 Express. Реализация и тестирование программы. Выполнение трассировки функций.
практическая работа [146,3 K], добавлен 23.01.2015