Обработка числовых последовательностей.
Сегодняшний
урок мы посвятим обработке числовых последовательностей. Для этого обычно
используется оператор цикла.
Алгоритмы для обработки последовательностей чаще относятся к одному из двух
типов: поиск; проверка условий.
Для последовательностей характерно, что в каждый момент времени нам
доступен только один элемент последовательности. Поэтому все алгоритмы строятся
с учетом однократного последовательного просмотра.
Рассмотрим несколько программ. В каждой из них одновременно
рассматривается только очередной член последовательности. Алгоритмы для решения
таких задач называются алгоритмами с линейным поиском.
Задача 1.
Вводится последовательность из N целых чисел. Найти сумму всех отрицательных
чисел.
Код программы.
Var I,n,x,sum:integer;
Begin
Write('Введите длину последовательности N=');
Readln(n);
Sum:=0;
For I:=1 to n do
Begin
Write('Введите число');
Readln(x);
if x<0 then sum:=sum+x
end;
If sum=0 then writeln('отрицательных чисел нет')
Else writeln('сумма отрицательных чисел =', sum);
Readln
End.
Задача 2.
Вводится последовательность ненулевых чисел, 0 - конец последовательности.
Определить, сколько раз последовательность меняет знак.
Var old, new: real;
K: integer;
Begin
Write('введите число');
Readln(old);
Write('введите число');
Readln(new);
K:=0;
Repeat
If new*old<0 then k:=k+1;
Old:=new;
Write('введите число');
Readln(new);
Until new=0;
If k>0 then writeln ('Последовательность меняет знак ',k,' раз')
else writeln ('Последовательность не меняет знак ');
readln;
end.
Тренировочные задания.
1. Вводится последовательность из n произвольных чисел. Определить, сколько раз
последовательность меняет знак.
2. Вводится последовательность чисел, 0-конец последовательности. Определить,
содержит ли последовательность хотя бы два равных соседних числа.
3. Вводится последовательность чисел, 0-конец последовательности. Найти два
наименьших числа.
4. Вводится последовательность из N целых чисел. Найти наибольшее из всех
отрицательных чисел.
5. Вводится последовательность из N целых чисел. Найти, сколько в ней нулей.
Разбор заданий урока.
3. Дано натуральное число N. Разложить его на простые множители.
Var n,I,j:word;
F:Byte;
Begin
Write('Введите натуральное число');
Readln(n);
Write(n:6,'=1'); {любое число имеет множитель 1}
F:=0;
J:=n;
for I:=2 to n div 2 do
begin
if j mod I=0 then
begin
f:= 1; {найден множитель больше 1}
while j mod i = 0 do
{цикл определяет, сколько множителей I в исходном
числе N}
begin
write('*',i);
j:=j div I
end;
end;
end;
If f=0 then writeln('*',n);
Readln
End.
4. Дано натуральное число N. Определить, является ли оно совершенным.
Совершенное число N равно сумме всех своих делителей, не превосходящих само N.
Var n,i,sum:word;
Begin
Write('Введите натуральное число');
Readln(n);
Sum:=0;
for i:=1 to n div 2 do if n mod I=0 then sum:=sum+i;
If sum=n then writeln('число ',n,' совершенное')
Else writeln(('число ',n,' не совершенное' );
Readln
End.
5.
Дано натуральное число N. Определить, является ли оно автоморфным. Автоморфное
число N равно последним разрядам квадрата этого числа: 5<->25,
6<->36, 25<->625.
Var n,r,m:word;
Begin
Write('Введите натуральное число');
Readln(n);
M:=n; r:=1;
While m>0 do {в цикле определяем разрядность
введенного числа (r)}
Begin
M:=m div 10;
R:=r*10;
End;
If (n*n mod r)=n then writeln('число ',N,' автоморфно')
Else writeln(('число ',N,' не автоморфно' );
Readln
End.
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.