Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ Информатика 2 часть.docx
Скачиваний:
5
Добавлен:
22.09.2019
Размер:
2.18 Mб
Скачать

3. Поиск минимального (максимального) элемента массива.

Алгоритм поиска минимального (максимального) элемента в неупорядоченном массиве довольно очевиден: делается предположение, что первый элемент массива является минимальным (максимальным), затем остальные элементы массива последовательно сравниваются с этим элементом. Если во время очередной проверки обнаруживается, что проверяемый элемент меньше (больше) принятого за минимальный (максимальный), то этот элемент принимается за минимальный (максимальный) и продолжается проверка оставшихся элементов.

Пример программы поиска минимального элемента в массиве целых чисел.

program Primer;

const n=10;

vara:array[1..n] of integer;

min,i:integer;

begin

{инструкция ввода массива}

min:=1;

for i:=2 to n do

if a[i]<a[min] then min:=i;

writeln(‘минимальный элемент массива’,a[min],’, номер элемента’,min);

end.

Пример.

Задание: Дан массив целых чисел. Найти сумму элементов массива, которые делятся на 5 нацело.

Алгоритм решения задачи:

  1. Попросить пользователя ввести с клавиатуры 5 чисел и записать их в массив A.

  2. Присвоить переменной S значение ноль (сумма элементов, которые делятся на 5).

  3. Просматривая массив, найти элементы, которые делятся на 5, т.е. при делении элемента массива на 5 остаток от деления должен равняться нулю и значение этих элементов накапливать в переменной S.

  4. Вывести сумму на экран.

Блок-схема программы приведена на рисунке И.3.

Рисунок И.3 – Алгоритм программы

Листинг программы:

program Primer;

var A:array[1..10] of integer;

i,S:integer;

begin

writeln(‘Введите 10 элементов массива’);

for i:=1 to 10 do readln(A[i]);

S:=0;

for i:=1 to 10 do

if A[i] mod 5=0 then S:=S+A[i];

writeln(‘Сумма элементов массива, которые делятся на 5 равна’,S);

end.

Приложение к

(информационное)

Пример выполнения лабораторной работы 5

Задание: Дан двумерный массив. В каждой строке все его элементы, не равные нулю, переписать (сохраняя порядок) в начало строки, а нулевые элементы - в конец строк массива. Новый массив не заводить.

Этапы решения задачи:

  1. Математическая модель: Необходимо "просматривать" массив построчно и находить в каждой строке пару (0:число), а затем менять их местами между собой и так до тех пор, пока в строке таких пар не окажется.

  2. Схема алгоритма приведена на рисунке К.1, Логика программы представлена на рисунке К.2..

  3. Листинг программы.

program example4;

var

V:array[1..100,1..100] of integer;

m,n,i,j,c: integer;

flag: boolean;

begin

write('Введите размерность массива m-n'); readln(m,n);

for i:=1 to m do

for j:=1 to n do begin

write('V[',i,',',j,']= '); readln(V[i,j]); {заполнение массива элементами, с помощью ввода с клавиатуры}

end;

for i:=1 to m do

repeat {поиск пары: нулевой и ненулевой элемент и замена их местами}

flag:= true;

for j:=1 to n-1 do

if (V[i,j]=0) and (V[i,j+1]<>0) then

begin

c:=V[i,j]; V[i,j]:=V[i,j+1]; V[i,j+1]:=c;

flag:= false;

end

until flag;

for i:= 1 to m do begin

for j:=1 to n do write(V[i,j]:2); {вывод элементов массива на экран}

writeln;

end;

readln;

end.

  1. Результаты тестирования программы.

Рисунок К.1–Схема алгоритма

Рисунок К.2–Логика алгоритма программы