Aleksey19801
?>

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

Информатика

Ответы

Valerevna Tuzova
1) Решение с рекурсии.
Программа проста в понимании, но неэффективна при больших значениях
function f(i: integer): longint;
begin
  if i < 2 then
    f := 1
  else
    f := f(i - 1) + f(i - 2);
end;

begin
  writeln('f(10) = ', f(10));
  writeln('f(25) = ', f(25));
  writeln('f(40) = ', f(40));
end.
2) Решение с динамического программирования. Вычисляет намного быстрее, чем решение с рекурсией.
var
  i: integer;
  f: array[0..40] of longint;
begin
  f[0] := 1;
  f[1] := 1;
  for i := 2 to 40 do
    f[i] := f[i - 1] + f[i - 2];
  writeln('f(10) = ', f[10]);
  writeln('f(25) = ', f[25]);
  writeln('f(40) = ', f[40]);
end.
3) Решение с моделирования. Использует меньше памяти.
function f(i: integer): longint;
var
  a, b: longint;
  j: integer;
begin
  if i < 2 then
    f := 1
  else
  begin
    a := 0;
    b := 1;
    for j := 0 to i do
    begin
      b := a + b;
      a := b - a;
    end;
    f := a;
  end;
end;

begin
  writeln('f(10) = ', f(10));
  writeln('f(25) = ', f(25));
  writeln('f(40) = ', f(40));
end.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

с++ Ввести список, который содержит фамилию, инициалы и год рождення работников отдельного подразделения. Вывести по указанию пользователя сообщение о работниках заданного года, или список фамилий по возрастанию года.​
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

kisa-luba
ВладимировнаАлександр1421
ПетровичЖивотовская1245
Maksimova-Shorokhov303
arturcristian
Оздоевский
ganna1790
Pgr100
lider-mpl550
tyrenumberone
впвыпвып-Зуйков629
Gainalii1912
Roman913
uchpaot
dima-a