Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Уроки программирования на Turbo Pascal


Информационный Канал Subscribe.Ru


Уроки программирования на Turbo Pascal #15

Подписчиков на 2002-09-13 - 2455 человек(а).

Рассылка проекта "Олимпиада.com.ru".


Главная Архив задач Конкурс Обучение Рассылки Форум Контакты

Здравствуйте, уважаемые подписчики!


Урок 15


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

Задача 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, г. Междуреченск.


Архив рассылки:

  Архив предыдущих выпусков рассылки: http://subscribe.ru/catalog/comp.soft.prog.bpascal ;

Урок 1 Урок 2 Урок 3 Урок 4 Урок 5
Урок 6 Урок 7 Урок 8 Урок 9 Урок 10
Урок 11 Урок 12 Урок 13 Урок 14

Реклама в рассылке:

RLE    

  


Подпишитесь на наши рассылки:

Новости проекта "Олимпиада.com.ru" [Алексей Шамис]
Новости проекта "Olimpiada.com.ru". Новые темы на форуме. Информация о пополнениях в архиве задач. Оперативно и своевременно!

Уроки программирования на Turbo Pascal [Татьяна Ганилова]
Хотите стать Великим Программистом? Начните свой путь к вершине славы с изучения языка Turbo Pascal. Он как нельзя лучше подходит для начинающих программистов и в то же время используется для разработки сложных "профессиональных" программ.

Олимпиадные задачи с решениями на Turbo Pascal [Алексей Шамис]
В рассылке публикуются решения интересных олимпиадных задач различного уровня. Содержит много теоретической информации. Периодичность - 2-3 раза в неделю.

Задача в неделю. Олимпиадные задачи по информатике [Александр Алексеев]
Каждый понедельник в рассылке публикуется задача, которую необходимо решить и в следующий понедельник прислать программу на тестирование. Решения проверяются, и в пятницу публикуется разбор и итоги тестирования.



Всегда рады видеть Вас на нашем сайте. Жду ваших предложений и замечаний, Алексей Шамис

Copyright © 2002 by Tatyana Ganilova.



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное