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

  • docx
  • 30.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л3-00086.docx

Обработка числовых последовательностей.


  Сегодняшний урок мы посвятим обработке числовых последовательностей. Для этого обычно используется оператор цикла.
Алгоритмы для обработки последовательностей чаще относятся к одному из двух типов: поиск; проверка условий.
  Для последовательностей характерно, что в каждый момент времени нам доступен только один элемент последовательности. Поэтому все алгоритмы строятся с учетом однократного последовательного просмотра.
  Рассмотрим несколько программ. В каждой из них одновременно рассматривается только очередной член последовательности. Алгоритмы для решения таких задач называются алгоритмами с линейным поиском.

Задача 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