ВВЕРХ
ВНИЗ
  • Home
  • Series
  • Series 12 - 16

Series 12 - 16

Характерной особенностью этой группы заданий является то, что все рассматриваемые здесь последовательности оканчиваются нулем. Таким образом, количество вводимых элементов наперед не известно.

Series12 — выводим количество чисел в заданной последовательности.

Series13 — находим сумму элементов, положительных и четных одновременно.

Series14 — выводим количество чисел, меньших наперед заданного числа.

Series15 — выводим номер первого числа в последовательности, большего заданного.

Series16 — находим номер последного числа, большего заданного.

Series12. Дан набор ненулевых целых чисел; признак его завершения — число 0. Вывести количество чисел в наборе.

Сначала решим задание Series12 для ручного ввода (с клавиатуры). Последовательность действий здесь такова:

1)Нужному количеству N ненулевых чисел присваиваем 0;

2)Заходим в цикл repeat - until, там вводим число а и одновременно увеличиваем N;

3)На выходе из цикла проверяем условие (а = 0): если оно выполняется (если число нулевое), то выходим из цикла;

4)Выводим количество чисел N.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
var
  a, N: integer;

begin
  N := 0; //начальное количество чисел в наборе
  repeat
    read(a); //вводим число
    inc(N) //увеличиваем количество чисел
  until a = 0; //если число=0, то выходим
  writeln;
  write('количество чисел = ', N)
end.

Для автоматического ввода нужно сначала инициализировать генератор псевдослучайных чисел randomize. Потом в пункте 2 предыдущего варианта решения вместо ввода переменной а с клавиатуры присвоить ей случайное число с интервала [-50, 49] и вывести на экран.


Series13. Дан набор ненулевых целых чисел; признак его завершения — число 0. Вывести сумму всех положительных четных чисел из данного набора. Если требуемые числа в наборе отсутствуют, то вывести 0.

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

1)Сумме S положительных чисел сначала присваиваем 0;

2)Заходим в цикл repeat - until;

3)Вводим число A с клавиатуры;

4)Если это число положительно и четно одновременно, то прибавляем его к сумме S;

5)Проверяем условие выхода из цикла: если введенное число равно 0, то выходим;

6)Выводим искомую сумму S.


Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
var
  a, S: integer;

begin
  S := 0; //начальная сумма
  repeat
    read(a);
   { Если числа положительные и четные, 
   то увеличиваем их сумму: }
    if (a > 0)and(a mod 2 = 0) then S := S + a
  until a = 0; //если число=0, то выходим
  writeln;
  write('Результат: ', S)
end.

Для автоматического ввода все то же самое, только перед циклом добавляем генератор псевдослучайных чисел randomize, а в цикле вместо read(a) переменной А присваиваем случайное число с диапазона [-10, 9] и выводим его.


Series14. Дано целое число K и набор ненулевых целых чисел; признак его завершения — число 0. Вывести количество чисел в наборе, меньших K.

Эту задачу решим с помощью случайного ввода. Порядок действий:

1)Вводим с клавиатуры целое число K, с которым будем сравнивать все последующие числа;

2)Количество чисел q, меньших К сначала присваиваем нулю: q = 0;

3)Заходим в цикл repeat - until, записывая перед этим генератор псевдослучайных чисел randomize;

4)Находим случайное число А с диапазона [-25, 25] и выводим его;

5)Если A < K, то увеличиваем q на 1;

6)Проверяем условие A = 0: если оно выполняется, то выходим из цикла;

7)Выводим q - количество чисел, меньших К.


Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
var
  a, K, q: integer;
  
begin
  write('K = ');
  readln(K);
  q := 0;//количество требуемых в условии чисел равно 0
  randomize; //генератор псевдослучайных чисел
  repeat
    a := -25 + random(51); //случайное число [-25, 25]
    write(a, ' ');
   { Если число a < K, то увеличиваем количество таких чисел: }
    if a < K then inc(q)
  until a = 0; //если число=0, то выходим
  writeln;
  write('Результат: ', q)
end.

Series15. Дано целое число K и набор ненулевых целых чисел; признак его завершения — число 0. Вывести номер первого числа в наборе, большего K. Если таких чисел нет, то вывести 0.

Здесь будем искать номер FirstNumber - номер первого в списке числа, которое больше К. Порядок действий:

1)Вводим целое К;

2)Инициализируем номера чисел q единицей: q = 1;

3)Искомому номеру присваиваем 0: FirstNumber = 0(ни одно число не проверено);

4)Заходим в цикл repeat - until;

5)Вводим с клавиатуры число А последовательности;

6)Проверяем, не равен ли искомый номер FirstNumber нулю. Это необходимо для того, что если FirstNumber ≠ 0, то мы нашли первое число, удовлетворяющее условие А > K, и дальнейшая проверка бессмысленна. Если номер равен 0 (число еще не найдено), то:

   6.1)Проверяем условие a > K - если оно выполняется, то запоминаем номер данного элемента А: FirstNumber = q;

   6.2)Увеличиваем номер q для следующего элемента последовательности (если таков будет);

7)Выходим из цикла при выполнении условия выхода A = 0;

8)Выводим результат - номер первого элемента большего К.


Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
var
  a, K, q, FirstNumber: integer;

begin
  write('K = ');
  readln(K);
  q := 1; //номер числа = 1
  FirstNumber := 0; //номер искомого числа = 0
  repeat
    read(a); 
    if FirstNumber = 0 then begin
      //если a > K, то находим номер числа а:
      if a > K then FirstNumber := q;
      inc(q)
    end
  until a = 0; //если число = 0, то выходим
  writeln;
  writeln('Результат: ', FirstNumber)
end.

*   *   *

Второй вариант решения задачи Series15 при вводе элементов последовательности с клавиатуры. Этот пример отличается от предыдущего тем, что для запоминания номера элемента используется индикатор - переменная bln логического типа (сокр. от "boolean"), меняющая свое значение при достижении данного условия (номер первого в последов. числа большего К). Если bln = false, то такого немера ещё не найдено, bln = true - условие выполнено и найден номер нужного числа.

Порядок действий:

1)Вводим целое К для сравнения его с элем. последовательности;

2)Инициализируем нумерацию чисел: q = 0 (элементы считаем начиная с 0);

3)Инициализируем логическую переменную: bln = false (нужное число ещё не найдено);

4)Заходим в цикл с послеусловием repeat - until;

5)Вводим с клавиатуры число А последовательности;

6)Дальше имеет смысл проверять, если bln = false (нужное число ещё не найдено). В таком случае:

   6.1)При выполнении нужного условия a > K меняем значение индикатора: bln = true - условие выполнено;

   6.2)Увеличиваем номер q элемента А;

7)Если выполняется условие A = 0, то выходим;

8)После выхода, если bln = false (нужное число так и не найдено), то q = 0;

9)Выводим результат - число q.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
var
  a, K, q: integer;
  bln: boolean;
  
begin
  write('K = ');
  readln(K);
  q := 0; //номер числа = 0
  bln := false; //число ещё не найдено
  repeat
    read(a); 
    if bln = false then begin
      if a > K then bln := true;//если a > K, то число найдено
      inc(q)
    end
  until a = 0; //если число = 0, то выходим
  writeln;
  if bln = false then q := 0;
  write('Результат: ', q)
end.

Для случайного ввода элементов вместо read(a) из предыдущего списка водим случайное число и выводим его:


Series16. Дано целое число K и набор ненулевых целых чисел; признак его завершения — число 0. Вывести номер последнего числа в наборе, большего K. Если таких чисел нет, то вывести 0.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
var
  a, K, q, i: integer;

begin
  write('K = ');
  readln(K);
  q := 0; //номер вводимого числа
  i := 0; //номер последнего числа a > K
  a := 1; //начальное значение для входа в цикл (любое число <> 0)
  while a <> 0 do begin
    inc(q);
    read(a);
   { Проверяем условие a > K. Если оно
   ни разу не выполнится, то i = 0: }
    if a > K then i := q
  end;
  writeln;
  write('Результат: ', i)//выводим номер числа
end.

*   *   *

Второй вариант решения задачи Series16 - с помощью генератора псевдослучайных чисел:




Яндекс.Метрика