Разработка программы создания вектора

Тип работы:
Лабораторная работа
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

1. Постановка задачи

Дана матрица A (N, M).

1. В массив C записать все элементы из матрицы A, неравные числу, введённому с клавиатуры, и подсчитать число таких элементов.

2. Расположить элементы массива C, стоящие на чётных местах по убыванию.

Для отладки программы элементы массива сформировать с помощью генератора случайных чисел.

2. Описание алгоритма решения задачи графическим способом

/

Укрупненная схема алгоритма

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 г.

ПоказатьСвернуть
Заполнить форму текущей работой