Решение задач. День пятнадцатый. Series21-28


series21-28

Приветствуем читателей нашего сайта! Сегодня мы продолжим решать задачи из блока Series, а именно задачи Series21-28.

Series21-28

Series21°. Дано целое число N (> 1) и набор из N вещественных чисел. Проверить, образует ли данный набор возрастающую последовательность. Если образует, то вывести True, если нет — вывести False.

program series21;

// previous_digit = prev_d
// next_digit = next_d
var
  N, i: integer;
  prev_d, next_d: real;
  increasing: boolean;

begin
  write('N = ');
  readln(N);
  increasing := true;
  write('Введите число: ');
  readln(prev_d);
  for i := 2 to N do
  begin
    write('Введите число: ');
    readln(next_d);
    if next_d > prev_d 
      then
      prev_d := next_d
    else
      increasing := false
  end;
  write(increasing)
end.



Series22. Дано целое число N (> 1) и набор из N вещественных чисел. Если данный набор образует убывающую последовательность, то вывести 0; в противном случае вывести номер первого числа, нарушающего закономерность.

program series22;

// previous_digit = prev_d
// next_digit = next_d
var
  N, i, count: integer;
  prev_d, next_d: real;
  decreasing, first: boolean;

begin
  write('N = ');
  readln(N);
  decreasing := true;
  first := true;
  write('Введите число: ');
  readln(prev_d);
  for i := 2 to N do
  begin
    write('Введите число: ');
    readln(next_d);
    if next_d < prev_d 
      then
      prev_d := next_d
    else
    begin
      decreasing := false;
      if first then 
      begin
        count := i;
        first := false;
      end;
    end;
  end;
  if decreasing 
    then 
    write(0) 
  else 
    write('Номер первого числа, нарушающего закономерность: ', count)
end.



Series23. Дано целое число N (> 2) и набор из N вещественных чисел. Набор называется пилообразным, если каждый его внутренний элемент либо больше, либо меньше обоих своих соседей (т. е. является «зубцом»). Если данный набор является пилообразным, то вывести 0; в противном случае вывести номер первого элемента, не являющегося зубцом.

program series23;

// previous_digit = prev_d
// next_digit = next_d
var
  N, i, count: integer;
  prev_d, next_d, tooth_d: real;
  teeth, first: boolean;

begin
  write('N = ');
  readln(N);
  teeth := true;
  first := true;
  write('Введите число: ');
  readln(prev_d);
  write('Введите число: ');
  readln(tooth_d);
  for i := 3 to N do
  begin
    write('Введите число: ');
    readln(next_d);
    if (tooth_d > prev_d) and (tooth_d > next_d) or (tooth_d < next_d ) and (tooth_d < prev_d)
      then
    begin
      prev_d := tooth_d;
      tooth_d := next_d;
    end
    else
    begin
      teeth := false;
      if first then 
      begin
        count := i - 1;
        first := false;
      end;
    end;
  end;
  if teeth 
    then 
    write(0) 
  else 
    write('Номер первого числа, нарушающего закономерность: ', count)
end.

Series24. Дано целое число N и набор из N целых чисел, содержащий по крайней мере два нуля. Вывести сумму чисел из данного набора, расположенных между последними двумя нулями (если последние нули идут подряд, то вывести 0).

program Series24;

var
  sum, sum_last, N, digit: integer;

begin
  write('Введите число N: ');
  readln(N);
  while N <> 0 do
  begin
    write('Введите число: ');
    readln(digit);
    sum := sum + digit;
    if digit = 0 then
    begin
      sum_last := sum;
      sum := 0;
    end;
    Dec(N)
  end;
  writeln('Cумма чисел, расположенных между последними двумя нулями: ', sum_last);
end.

Series25. Дано целое число N и набор из N целых чисел, содержащий по крайней мере два нуля. Вывести сумму чисел из данного набора, расположенных между первым и последним нулем (если первый и последний нули идут подряд, то вывести 0).

program Series25;

var
  sum, sum_last, N, digit: integer;

begin
  write('N = ');
  readln(N);
  repeat
    write('Введите число: ');
    readln(digit);
    Dec(N)
  until digit = 0;
  
  while N <> 0 do
  begin
    write('Введите число: ');
    readln(digit);
    sum := sum + digit;
    if digit = 0 then
    begin
      sum_last := sum_last + sum;
      sum := 0;
    end;
    Dec(N)
  end;
  writeln('Cумма чисел, расположенных между первым и последним нулями: ', sum_last);
end.

Последовательности: вложенные циклы

Series26. Даны целые числа K, N и набор из N вещественных чисел: A1, A2, …, AN. Вывести K-e степени чисел из данного набора:
(A1)K, (A2)K, …, (AN)K.

program Series26;

var
  K, N, i, j: integer;
  a, a_pow: real;

begin
  write('N = ');
  readln(N);
  write('K = ');
  readln(K);
  a_pow := 1;
  for i := 1 to N do
  begin
    write('Введите число: ');
    readln(a);
    for j := 1 to K do a_pow := a_pow * a;
    writeln(a, ' в степени ', k, ' равно ', a_pow);
    a_pow := 1;
  end;
end.

Series27. Дано целое число N и набор из N вещественных чисел: A1, A2, …, AN. Вывести следующие числа:
A1, (A2)2, …, (AN−1)N−1, (AN)N.

program Series27;

var
  N, i, j: integer;
  a, a_pow: real;

begin
  write('N = ');
  readln(N);
  a_pow := 1;
  for i := 1 to N do
  begin
    write('Введите число: ');
    readln(a);
    for j := 1 to i do a_pow := a_pow * a;
    writeln(a, ' в степени ', i, ' равно ', a_pow);
    a_pow := 1;
  end;
end.

Series28. Дано целое число N и набор из N вещественных чисел: A1, A2, …, AN. Вывести следующие числа:
(A1)N, (A2)N−1, …, (AN−1)2, AN.

program Series28;

var
  N, i, j, n_pow: integer;
  a, a_pow: real;

begin
  write('N = ');
  readln(N);
  a_pow := 1;
  n_pow := N;
  for i := 1 to N do
  begin
    write('Введите число: ');
    readln(a);
    for j := N downto i do a_pow := a_pow * a;
    writeln(a, ' в степени ', n_pow, ' равно ', a_pow);
    Dec(n_pow);
    a_pow := 1
  end
end.

На сегодня все! Если у вас возникли вопросы, не стесняйтесь, задавайте их в комментариях. И не забывайте кликать по кнопочкам.

  1. @disqus_bh9tyEj9Ro:disqus «if first then» — это то же самое, что и «if first=true then».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *