max: = a[1];
И дальше сравниваем все оставшиеся элементы с наибольшим. Если значение максимального элемента оказывается меньше очередного значения элемента массива, то необходимо сделать наибольшим значением это очередное значение элемента массива.
Вопрос: Как реализовать вышесказанное с использованием операторов языка Pascal?
max: = a[1];
for i: = 2 to n do
if max<a[i] then max: = a[i];
Задача 4.
Найти индекс максимального элемента массива. Решать на компьютере.
Требования к оформлению задачи:
1. Предусмотреть запрос у пользователя размера массива.
2. Предусмотреть возможность ввода массива по желанию пользователя: или в диалоге, или формирование массива с использованием датчика случайных чисел.
3. Предусмотреть вывод в строку исходного массива.
4. Организовать комментированный вывод результата.
5. Предусмотреть повторение программы по желанию пользователя.
program m2;
uses CRT;
type mas = array [1 .. 100] of integer;
var a: mas;
imax, m, n, i, max; integer;
c: char;
begin
repeat
clrscr;
Randomize;
writeln (‘Программа позволяет найти индекс наибольшего элемента’);
writeln (‘Введите количество элементов массива’);
readln (n);
writeln (‘Выберите способ ввода массива’);
writeln (‘1 – Ввод значений элементов массива в диалоге с пользователем’);
writeln (‘2 – Заполнение массива с использованием датчика сл. чисел’);
readln (m);
case m of
1: for i: = 1 to n do
begin
writeln (‘Введите значение’, i, ‘элемента массива’);
readln (a[i]);
end;
2: for i: = 1 to n do
a[i]: = Random (10);
end;
writeln (‘Исходный массив’);
for i: = 1 to n do
write (a[i]: 3);
writeln;
max: = a[1];
imax: = 1;
for i: = 2 to n do
if max < a[i] then
begin
max: = a[i];
imax: = i;
end;
writeln (‘Индекс наибольшего элемента = ’, imax);
writeln (‘Хотите повторить y/n?’);
readln (c);
until c = ‘n’;
end.
Для тех, кто закончил программу, задать дополнительные вопросы:
1. Если в массиве несколько элементов имеют наибольшее значение, то индекс какого из них будет выведен?
2. Какие необходимо внести изменения, чтобы вывести в качестве результата индекс последнего наибольшего элемента массива?
3. Модифицировать программу, чтобы на экран выводилось наибольшее значение, а также индексы всех максимальных элементов.
Задача 5.
Найти количество элементов массива, больших х. Выполнить на компьютере.
Требования к оформлению задачи:
1. Предусмотреть запрос у пользователя размера массива.
2. Предусмотреть возможность ввода массива по желанию пользователя: или в диалоге, или формирование массива с использованием датчика случайных чисел.
3. Предусмотреть вывод в строку исходного массива.
4. Организовать комментированный вывод результата.
5. Предусмотреть повторение программы по желанию пользователя.
Задачи поиска.
Задачи поиска очень похожи на задачи анализа. В них массив тоже задан, т. е. является аргументом алгоритма, и нужно найти, где в этом массиве находится нужный элемент.
Существуют различные методы поиска, мы рассмотрим только самый простой из них – метод последовательного перебора.
Задача 1.
Найти в массиве элемент, равный х.
Найти элемент, значит найти его индекс, т. е. такое j, что A[j] = x. Поскольку искомого элемента может и не оказаться, будем считать, что в этом случае j = 0. Простейший способ – перебрать все элементы массива и запомнить, где расположен нужный.
program poisk1;
const m = 100;
type mas = array [1 .. m] of real;
var x: real;
a: mas;
i, j: byte;
begin
readln (n); {размер массива}
readln (x); {значение, с которым сравниваем}
j: = 0;
fоr i: = 1 to n do
if A [i] = x then j: = i;
if j = 0 then write (‘нет такого элемента’)
else write (‘есть элемент; его индекс’, j)
end.
У этой программы два недостатка:
1. Если значение х встречается в массиве несколько раз, мы в результате получим индекс последнего из этих элементов;
2. После того, как элемент уже найден, происходит ненужный просмотр массива до конца.
Для устранения этих недостатков достаточно организовать просмотр так, чтобы остановиться сразу же после первой встречи с элементом, равным х. Но, поскольку мы не знаем, где находится такой элемент и есть ли он вообще, мы не можем заранее определить количество повторений цикла, следовательно необходимо использовать цикл while или repeat.
program poisk2;
const m = 100;
type mas = array [1…m] of real;
var x: real; a: mas; i, j: byte;
begin
read (n); read (x);
j: = 0;
i: = 1;
while (i < = n) and (j = 0) do
begin
if A[i] = x then j = i;
i: = i + 1;
end;
if j = 0 then writeln (‘нет такого элемента’);
else writeln (‘есть такой элемент, его индекс’, j);
end.
Блок заданий № 3.
Задание 1.
Какое значение примет переменная S в результате выполнения следующего фрагмента, при n = 5. Зарисовать данный фрагмент в виде блок-схемы.
readln (n);
for i: = 1 to n do
a [i]: = i + 1;
S: = 0;
for i: = 1 to n do
begin
T: = A [i] mod i;
S: = S + T
end;
writeln (‘S = ’, S);
Задание 2.
Какое значение примет переменная S в результате выполнения следующего фрагмента, при n = 10. Зарисовать данный фрагмент в виде блок-схемы.
readln (n);
a [1]: = 1;
a [2]: = 3;
for i: = 3 to n do
a [i]: = a [i-1] + a [i-2];
S: = a [1] + a [n];
writeln (‘S = ’, S);
Задание 3.
Какое значение примет переменная S в результате выполнения следующего фрагмента, при n = 7. Значения элементов массива А равны соответственно: 1; 2; 0; 3; 4; 6; 3. Зарисовать данный фрагмент в виде блок-схемы.
for i: = 1 to n do
begin
t: = a [i];
a [i]: = a [n – i + 1];
a [n – i + 1]: = t;
end;
S: = a [2] + a [4];
writeln (‘S = ’, S);
Задание 4.
Какое значение примет переменная S в результате выполнения следующего фрагмента, при n = 9. Значения элементов массива А равны соответственно: 5; -4; 3; 2; 1; -1; -1; 2; -4. Зарисовать данный фрагмент в виде блок-схемы.
S: = 0;
for i: = 2 to n – 1 do
if (a [i] * a [i + 1] < 0) and (a [i] * a [i – 1] < 0) then S: = S + 1;
writeln (‘S = ’, S);
Задание 5.
Записать данный фрагмент на языке Pascal и определить, какое значение будет иметь переменная S в результате его выполнения при n = 4, если значения элементов массива А равны: 4; 2; 1; 5.
![]() |
Задание 6.
Записать данный фрагмент на языке Pascal и определить какое значение будет иметь переменная Р в результате выполнения данного фрагмента при n = 6, если элементы массива А равны соответственно: 1; 0; 11; 3; 2; 4.
Задание 7.
Чему будут равны значения элементов массива В после выполнения данного фрагмента, если количество элементов целочисленного массива А равно n = 5; значения элементов массива А равно: 5; -3; 0; -2; 1. Запишите данный фрагмент по правилам языка Pascal.
![]() |
Задание 8.
Чему будут равны значения элементов массива В после выполнения данного фрагмента, если количество элементов целочисленного массива А равно n = 4; значения элементов массива А равно: 6; 6; 4; 8. Запишите данный фрагмент по правилам языка Pascal.
![]() |
Задачи для самостоятельного решения на компьютере.
Требования к оформлению задачи:
1. Предусмотреть запрос у пользователя размера массива.
2. Предусмотреть возможность ввода массива по желанию пользователя: или в диалоге, или формирование массива с использованием датчика случайных чисел.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 |





