В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
lilulurens
lilulurens
12.04.2022 10:12 •  Информатика

Склавиатуры вводится натуральное число n, а затем n целых чисел. требуется подсчитать, сколько введенных чисел начинается и оканчивается одинаковой цифрой. в программе должна быть логическая функция, определяющая одинаковые ли цифры. язык паскаль.

Показать ответ
Ответ:
LimomPas
LimomPas
09.03.2020 10:28
В приложении дана блок-схема с алгоритмом, вычисляющим значение функции F по рекуррентной схеме.
Ниже приводится запись программы на языке Pascal, содержащая две функции - рекуррентную F (строго в соответствии с алгоритмом) и рекурсивную Fr.
Вывод иллюстрирует работу программы для значения аргумента n=6

function F(n: integer): integer;
{рекуррентная}
var
  i, p: integer;
  fn1, fn2: integer;

begin
  case n of
    1: Result := 1;
    2: Result := 2;
  else
    begin
      fn2 := 1;
      fn1 := 2;
      for i := 3 to n do
      begin
        p := 2 * fn1 + (i - 2) * fn2;
        fn2 := fn1;
        fn1 := p
      end;
      Result := p
    end
  end
end;

function Fr(n: integer): integer;
{рекурсивная - оцените изящество рекурсии!}
begin
  case n of
    1: Result := 1;
    2: Result := 2;
  else Result := 2 * Fr(n - 1) + (n - 2) * Fr(n - 2)
  end
end;

begin
  writeln(F(6), ' ', Fr(6))
end.

Тестовое решение:
142 142

ответ: значение функции F(6) равно 142.
0,0(0 оценок)
Ответ:
Superstylegir
Superstylegir
16.05.2022 03:15
1. Решение для сомневающихся и привыкших писать программы безмозгло "в лоб"

var
  k, p, q: integer;
  flag: boolean;
  f:Text

begin
  Assign(f,'input.txt');
  Reset(f);
  read(f,k);
  Close(f);
  case k of
    1, 2, 4, 7: writeln('NO');
    3, 5: writeln('YES');
  else
    q := k mod 5;
    if (q = 0) or (k = 3) then writeln('YES')
    else
    begin
      q := (k div 5);
      flag := false;
      while (not flag) and (q > 0) do
      begin
        p := k - 5 * q;
        if p mod 3 = 0 then
        begin
          writeln('YES');
          flag := true
        end;
        q := q - 1
      end;
      if (not flag) then writeln('NO')
    end
  end
end.

2. Решение в соответствии с алгоритмом, приведенным в комментарии к вопросу.

const
  Kno = [1, 2, 4, 7];

var
  k: integer;
  f:Text

begin
  Assign(f,'input.txt');
  Reset(f);
  read(f,k);
  Close(f);
  if k in Kno then writeln('NO')
  else writeln('YES')
end.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота