- •1. Задание на контрольную работу
- •Задание 1
- •Варианты задач № 1
- •Задание 2
- •2. Методические указания к решению задач
- •2.1. Этапы подготовки задач к решению на эвм
- •2.2. Типовые алгоритмы вычислительных процессов
- •2.2.1. Линейный вычислительный процесс
- •2.2.2. Разветвляющийся вычислительный процесс
- •2.2.3. Циклический вычислительный процесс
- •Цикл с заданным числом шагов
- •Итерационный цикл
- •2.2.4. Циклический разветвляющийся (смешанный) вычислительный процесс
- •2.2.5. Накопление суммы и произведения
- •2.2.6. Поиск наибольшего числа в массиве
- •2.2.7. Сложные циклы
- •Методические указания к выполнению задания 2
- •Библиографический список
- •Приложение 1
- •Приложение 2
2.2.6. Поиск наибольшего числа в массиве
Поиск наибольшего элемента в массиве y(k) выполняется в цикле. Обозначим элементы массива y(k), где k=1÷N. Наибольшее число – max.
В качестве начального берется первый элемент массива y(k), с которым последовательно сравниваются остальные элементы. Будем попарно выполнять сравнения чисел, обозначив через max первый элемент массива, т.е. max=y(1). Если очередной элемент окажется больше max, то max присваивается уже этому элементу массива. Затем новое значение max сравнивается со следующим элементом и т.д.
Так перебрав все элементы массива y(k), мы можем определить наибольший (max) среди них.Блок-схема приведена на рис. 7.
Указана размерность массива
Ввод элементов массива в память
Присвоение max значения первому
элементу массива
Изменение индекса для второго элемента
массива
Попарное сравнение двух элементов
массива
Присвоение max значения элементу,
оказавшегося больше предыдущего
Проверка, все ли элементы массива Y(k)
перебраны
Вывод на дисплей всех элементов
массива Y(k)
Вывод на дисплей max элемента массива
Рис. 7. Алгоритм поиска наибольшего элемента в массиве
PROGRAM POISK;
var
I, k, n: integer;
y:=array[1..100] of real;
max: real;
begin
writeln (‘ввести размерность массива’);
readln (n);
for k=1 to n do
begin
writeln (‘ввести число’);
readln (y[k]);
end;
max:= y(1)
for k=2 to n do
if max < y[k] then
begin
max:=y[k];
end;
writeln (‘исходный массив’);
for i=1 to n do
begin
writeln (y[k]:3:1, ‘ ’);
end;
writeln (‘наибольшее число =’, max:4:1);
end.
2.2.7. Сложные циклы
По аналогии разрабатывается и представляется алгоритм для 2-х мерных массивов.
Пример. Дана матрица А. сформировать вектор, координаты которого есть произведения элементов строк.
Обозначим элементы матрицы A(I, y).
I – номер строки, I=1÷3.
Y – номер столбца, y=1÷4.
Обозначим элемент искомого вектора P(I). Первая координата вектора определяется из выражения:
, у=1÷4
Начальное значение P(I)=1. При накоплении произведения элементов строки организуется цикл по переменной .
В общем случае координаты вектора определяются выражением
Алгоритм содержит 2 цикла. Цикл по называется внутренним по отношению к циклу по. Цикл по– внешний цикл. Рабочая часть цикла по переменной– это цикл по переменной.
Блок-схема алгоритма приведена на рис. 8.
Рис. 8. Сложный циклический алгоритм
PROGRAM MATRICA;
type
matr: array [1 3, 1..4] of real;
mas: array [1..3] of real;
var
i, j, n, m: integer;
P: mas;
A: matr;
begin
writeln (‘ввести размерность матрицы’);
readln (m, n);
FOR i=1 to m do
FOR i=1 to n do
begin
writeln (‘ввести число’);
readln (A[i, j]);
end;
FOR i=1 to 3 do
begin
P(i)=1;
FOR j=1 to 4 do
begin
P(i):=P(i)*A(i, j)
end;
end;
writeln (‘вывод матрицы’);
FOR i=1 to m do
begin
FOR i=1 to n do
write (A[i, j]:3:1, ‘ ’);
writeln;
end;
writeln (‘искомый вектор’);
FOR I=1 to m do
begin
writeln (P[i]:2:1, ‘ ’);
end;
end.