Сегодняшний урок мы посвятим
обработке числовых последовательностей. Для
этого обычно используется оператор цикла.
Алгоритмы для обработки последовательностей
чаще относятся к одному из двух типов: поиск;
проверка условий.
Для последовательностей характерно, что в
каждый момент времени нам доступен только один
элемент последовательности. Поэтому все
алгоритмы строятся с учетом однократного
последовательного просмотра.
Рассмотрим несколько программ. В каждой из
них одновременно рассматривается только
очередной член последовательности. Алгоритмы
для решения таких задач называются алгоритмами с
линейным поиском.
Задача 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 целых чисел.
Найти, сколько в ней нулей.
Разбор заданий
урока 14.
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.
Желаю успехов!
Ганилова Татьяна Евгеньевна school6@rikt.ru
Гимназия №6, г. Междуреченск.