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

, с домашним задание. всё по заданию, но сделать в порядке не возрастания, а убывания сделайте !


, с домашним задание. всё по заданию, но сделать в порядке не возрастания, а убывания сделайте !

Показать ответ
Ответ:
tima23qwerty
tima23qwerty
16.01.2021 23:03
Type
  tBook = record
    author: string[20];
    title: string[30];
    year: integer
  end;

var
  f1: file of tBook;

function k2000(): integer;
{ файл должен быт открыт на чтение }
var
  k: integer;
  book: tBook;
begin
  while not Eof(f1) do
  begin
    Read(f1, book);
    if book.year < 2000 then k := k + 1
  end;
  k2000 := k
end;

var
  B: tbook;

begin
  Assign(f1, 'books.000');
  Rewrite(f1);
  Writeln('Для книги вводите в трех строках: автор, название, год издания');
  Writeln('Введите * для завершения ввода');
  repeat
    Readln(B.author);
    if B.author[1] <> '*' then
    begin
      Readln(B.title); Readln(B.year); Write(f1, B)
    end
  until B.author[1] = '*';
  Close(f1);
  Write('Количество книг, изданных до 2000г равно ');
  Reset(f1);
  Writeln(k2000);
  Close(f1)
end.

Пример диалога с программой:
Для книги вводите в трех строках: автор, название, год издания
Введите * для завершения ввода
Александр Грин
Бегущая по волнам
1984
Эдгар Аллан По
Золотой жук
2002
Луи Буссенар
Капитан Сорви-голова
1997
Гарри Гаррисон
Крыса из нержавеющей стали
2007
А. и Б. Стругацкие
Сказка о Тройке
1974
*
Количество книг, изданных до 2000г равно 3
0,0(0 оценок)
Ответ:
daridolgova
daridolgova
19.03.2022 01:06
Описание алгоритма:
Будем наращивать длину последовательности от 0 знаков до N. Пусть после какого-то количества шагов у нас выписаны все последовательности длины А и мы хотим узнать количество подходящих последовательностей длины А+1. Распределим все последовательности на три группы(так как предыдущие символы нас не волнуют, то любые последовательности одной группы для нас равнозначны):
1) Заканчиваются на 0.
2) Ровно на одну единицу
3) Ровно на две единицы.
Из каждой последовательности группы 1 приписыванием нуля или единицы мы можем получить одну последовательность группы 1 и одну - группы 2. Неважно, какие именно, но они не перекрываются, т.к. предыдущие символы различны, хоть мы их и не учитываем. Точно так же из второй группы мы получаем одну последовательность группы 3 и одну группы 1, а из группы 3 - только группу 1. Таким образом, если количества последовательностей длины А по группам были (x, y, z), то для длины А+1 такое распределение будет (x+y+z, x, y). Если взять для длины 0 тройку (0, 0, 1) и просчитать тройки от 1 до N, получится искомое количество. Для N=1 и N=2 также работает правильно.
Программа на Pascal:

var num00,num01,num11,mem00:integer;
    n,i:byte;
begin
readln(n);
  num00:=1;
  for i:=1 to n do begin
    mem00:=num11;
    num11:=num01;
    num01:=num00;
    num00:=num01+num11+mem00;
  end;
writeln(num11+num01+num00);
end.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота