Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник.docx
Скачиваний:
36
Добавлен:
21.12.2018
Размер:
2.15 Mб
Скачать

3.Циклы Определить количество элементов массива, значение которых больше соседних элементов

Задача:

Пользователь вводит n элементов массива. Требуется определить количество элементов, значение которых больше, чем у соседних элементов массива.

Описание переменных:

m - количество реальных элементов массива;

qty - количество элементов массива, значение которых больше, чем у соседей.

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

  1. Считываем числа с помощью процедуры read() и помещаем их в массив.

  2. Переменной qty присваиваем значение 0.

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

  4. В условии цикла выражение i < m говорит о том, что последний элемент массива также не проверяется, т.к. у него нет правого соседа.

  5. Если очередной элемент массива (arr[i]) больше предшествующего (arr[i-1]) и очередной элемент массива (arr[i]) больше последующего (arr[i+1]), то ...

  6. ... увеличить значение qty на единицу и ...

  7. ... увеличить значение i на 2, т.к проверять следующий элемент нет смысла, т.к. уже известно, что он меньше левого соседа.

  8. Иначе (если условие не выполнилось) перейти к следующему элементу массива (i := i + 1).

  9. Вывести значение qty на экран.

Это не оптимальный алгоритм, но короткий.

Программа на языке Паскаль:

const

n = 100;

var arr: array[1..n] of integer; i, m, qty: byte;

begin

write('Количество элементов массива: ');

readln(m);

write('Элементы массива через пробел: ');

for i:=1 to m do

read(arr[i]);

readln;

qty := 0;

i := 2;

while i < m do

if (arr[i] > arr[i-1]) and (arr[i] > arr[i+1]) then begin

qty := qty + 1;

i := i + 2

end

else i := i + 1;

writeln('Кол-во элементов, которые больше соседей: ', qty);

readln;

end.

Примечания:

Пример выполнения программы:

Количество элементов массива: 6

Элементы массива через пробел: 3 4 2 3 7 6

Количество элементов, которые больше соседей: 2

Получается 2, т.к. только четверка и семерка больше обоих своих соседей.

Определить количество простых чисел

Задача:

Вводятся целые числа до первого числа, которое меньше двух. Определить, сколько простых чисел было введено.

Программа на языке Паскаль:

var

n,i,q: integer;

f: boolean;

begin

q:=0;

write('Number: ');

readln(n);

while n > 2 do begin

f:=true;

for i:=2 to n div 2 do

if n mod i = 0 then

f:=false;

if f then

q:=q+1;

write('Number: ');

readln(n);

end;

writeln(q,' prime numbers');

readln;

end.

Сумма элементов различных рядов

Задача:

Задача 1. Найти сумму n-го количества элементов ряда 1, -0.5, 0.25, -0.125, …

Задача 2. Найти сумму и количество элементов последовательности, которые по модулю больше 0.001. Последовательность:

S = 1/2 - 2/4 + 3/8 - 4/16 + ... - ...

Программа на языке Паскаль:

Задача 1.

var

a,sum: real;

n,i:integer;

begin

write('Количество элементов ряда: ');

readln(n);

a:=1;

sum:=0;

for i:=1 to n do begin

sum:=sum+a;

a:=-a/2

end;

writeln(sum:4:3);

readln

end.

Задача 2.

var

a, b, sign, n: integer;

sum: real;

begin

a := 1;

b := 2;

sign := 1;

sum := 0;

n := 0;

while a/b > 0.001 do begin

sum := sum + sign * (a/b);

n := n + 1;

sign := -sign;

a := a + 1;

b := b * 2;

end;

writeln('Sum: ', sum:5:3);

writeln('Qty: ', n);

readln;

end.