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