Список используемых источников

Begin

 p:=1;

 for i:=10 to 50 do

 if (i mod 3=0) and (i mod 10<>0) then

 p:=p*i; writeln(p);

end.

Пример 2: вводится последовательность ненулевых чисел, 0 – конец последовательности. Определить сумму отрицательных элементов последовательности, количество положительных элементов, максимальный и минимальный элемент последовательности.

Решение: описываем используемые в программе переменные – N, max, min, k, sum типа real. N – переменная, хранящая последовательность чисел, max, min – переменные для хранения максимального и минимального элемента последовательности, k, sum – переменные для хранения количества положительных и суммы отрицательных элементов последовательности.

Переменным k и sum присваиваем начальное значение равное 0. Переменным, хранящим максимальный и минимальный элемент последовательности, присваиваем первое число последовательности, с которым будем сравнивать последующие элементы последовательности.

Для решения данной задачи необходимо использовать цикл с заданным условием продолжения работы: while <условие> do <оператор>. Вводим с клавиатуры элементы последовательности, цикл будет закончен тогда, когда последнее введенной число с клавиатуры будет 0. С помощью условного оператора проверяем необходимые условия для решения задачи.  Перед циклом переменной max был присвоен первый элемент последовательной. Если элемент последовательности больше или равен присвоенному значению max, то переменная max принимает новое значение равное этому элементу. Так проверяем каждый элемент последовательности. Также проверяем числа на минимальный элемент последовательности.

С помощью условного оператора находим количество положительных элементов последовательности. Если число больше 0, то прибавляем к переменной 1 и проверяем следующее число последовательности.

Находим сумму отрицательных элементов последовательности. Если число меньше 0, то переменной sum присваиваем сумму этого элемента с исходным значением переменной sum. Проверяем так каждый элемент последовательности.

После цикла выводим на экран максимальный, минимальный элемент, количество положительных и сумму отрицательных чисел. Если в последовательности нет положительных или отрицательных чисел, то выводим на экран фразу: «В последовательности нет положительных (отрицательных) элементов последовательности».

Блок-схема алгоритма (рис. 2)

Запишем программу на языке Паскаль:

var N,max,min,k,sum:real;

Begin

write('Введите число последовательности N = ');

read(N);

k:=0; sum:=0; max:=N; min:=N;

while N<>0 do begin

if N>=max then max:=N; if N<=min then min:=N;

if N>0 then k:=k+1; if N<0 then sum:=sum+N;

read(N); end;

If k=0 then writeln('В последовательности нет положительных чисел') else writeln('В последовательности кол-во положительных чисел = ',k);

If sum=0 then writeln('в последовательности нет отрицательных чисел') else

writeln('В последовательности сумма отрицательных чисел = ',sum);

writeln('Максимально число в последовательности = ',max);

writeln('Минимальное число в последовательности = ',min);

end.

 

 

Рисунок 2 – блок-схема 2

Пример 3: вводится последовательность целых чисел (0 - конец последовательности). Найти две группы наибольшей длины, которые состоят из чисел, идущих в порядке возрастания [1].

Решение: i – номер элемента последовательности, x, x_st текущий и предыдущий элемент последовательности, kqr – количество найденных групп (0, 1, 2), k – количество элементов текущей группы, max1, max2 – количество элементов в каждой группе, konm1, konm2 – номер последнего элемента в каждой группе. Присвоим переменной i и k начальное значение равное 1, переменной kqr – начально значение равное 0. Введем последовательность элементов x. Используя цикл с постусловием, сначала введем элемент, а в конце проверим его на ноль. Пропускаем первый элемент, так как для проверки условия нужно хотя бы два элемента. Проверяем элементы, если элемент больше предыдущего и не является признаком конца последовательности (0), значит продолжается группа возрастающих элементов (k). Если же элемент не больше предыдущего, либо равен нулю (конец последовательности) и есть возрастающая последовательность (k больше 1), увеличиваем количество групп (kgr := kgr+1). Нашли первую группу. Если первая группа найдена, записываем количество элементов и индекс последнего элемента. Количество групп стало 2 - нашли вторую группу, если элементов меньше, чем в первой — это вторая группа, если элементов больше, чем в первой — это новая первая группа (первая становится второй). Если групп больше двух - проверяем, больше ли в новой найденной группе элементов, чем в предыдущих, если больше, чем в первой - записываем первую вместо второй и новую вместо первой. Если больше, чем во второй - записываем новую вместо второй. Для следующей группы сбрасываем счетчик (k := 1). Выводим результат в зависимости от количества групп (0, 1, 2). 0 – если групп нет, 1 – если есть одна группа, 2 – если нашлось две группы.

 

Блок-схема алгоритма (рис. 3) и (рис. 4):

 

Рисунок 3 – блок-схема 3

Рисунок 4 – блок-схема 3

 

Запишем программу на языке Паскаль:

Var

i: integer; x, x_st: integer;

kgr: integer; k: integer;

max1, max2: integer; konm1, konm2: integer;

Begin

i := 1; kgr := 0; k := 1;

write('x=');

Repeat

read(x);

     if (i<>1) then

              begin

                        if (x > x_st) and (x <> 0) then k := k+1

                        else if k > 1 then

Begin

                                  kgr := kgr+1;

                                  if kgr = 1 then

                                  begin max1 := k; konm1 := i-1 end

                                  else if kgr = 2 then

                                           if k <= max1 then begin max2 := k; konm2 := i-1 end

                                           else begin max2 := max1; konm2 := konm1; max1:=k; konm1 := i-1; end

                                  else if k > max1 then begin max2 := max1; konm2 := konm1; max1 := k; konm1 := i-1; end

                                  else if k > max2 then begin max2 := k; konm2 := i-1; end;

                                  k := 1;

                        end

              end;

     x_st := x;

     i := i+1;

until x = 0;

if kgr = 0 then writeln('Нет групп возрастающих элементов')

else if kgr = 1 then writeln('Есть одна группа, количество элементов в ней ',max1,'. Последний элемент - ',konm1)

Else

Begin

writeln('Количество элементов в группе 1 - ',max1,'. Последний элемент - ', konm1,'.');

writeln('Количество элементов в группе 2 - ',max2,'. Последний элемент - ', konm2,'.');

End

end.

Список используемых источников

1. Е.Р. Алексеев, О.В. Чеснокова, Т.В. Кучер «Самоучитель по программированию на Free Pascal и Lazarus», 2009. – 503 с.

2. А.В. Осипов «PascalABC.NET: Введение в современное программирование.», 2019 – 572с.


Дата добавления: 2022-12-03; просмотров: 41; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!