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

Ограничение времени
1 секунда
ограничение памяти
64mb
ввод
стандартный ввод или input.txt
вывод
стандартный вывод или output.txt
ваш знакомый — владелец сети кинотеатров. в каждом принадлежащем ему кинотеатре есть несколько кинозалов, причем в каждом зале кресла могут быть расположены по-разному. кроме того, различные залы имеют разное расписание сеансов. чтобы не запутаться во всём этом, знакомый попросил вас написать для него программу, моделирующую работу кинотеатров. такую программу называют «билетной системой». программа должна предоставлять пользователю возможность вносить «в систему» всю необходимую справочную информацию: добавлять кинотеатр, добавлять зал в кинотеатр, задавать конфигурацию кресел, создавать сеанс определённого фильма (с определённой длительностью и в определённое время). ну и самое главное: «система» должна уметь «продавать» билеты, отвечать на запросы о том, когда и где (в каком кинотеатре и зале) будет ближайший сеанс (на который есть свободные места) выбранного фильма, печатать для сеанса план зала с указанием занятых и свободных мест.

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

Показать ответ
Ответ:
hofferson
hofferson
25.06.2021 12:46
Для сдвига влево на 1 шаг алгоритм такой: 1) Запомнить значение 1 элемента массива во временную переменную 2) Организовать цикл i от 1 до (размер массива - 1) 3) i-тому элементу массива присвоить значение (i+1)-ого 4) конец цикла 5) последнему элементу присвоить сохранённое во временной переменной Для сдвига на N шагов применять данный алгоритм N раз. Для сдвига вправо: 1) Запомнить значение последнего элемента массива во временную переменную 2) Организовать цикл i от (размер массива) до 2 3) i-тому элементу массива присвоить значение (i-1)-ого 4) конец цикла 5) первому элементу присвоить сохранённое
0,0(0 оценок)
Ответ:
Ruslanchik111
Ruslanchik111
16.02.2023 23:26
1. Примерно так учат писать программы в школе...

const
  nn=100; // предельное кол-во элементов в массиве
type
  mas=array[1..nn] of integer;

procedure RandomArray(var a:mas;n,p,q:integer);
// Заполняет первые n элементов массива a
// случайными числами из интервала [p;q]
var
  i:integer;
begin
  for i:=1 to n do a[i]:=Random(q-p+1)+p
end;

procedure PrintArray(a:mas;n:integer);
// Выводит на экран первые n элементов массива a
var
  i:integer;
begin
  for i:=1 to n do Write(a[i],' ');
  Writeln
end;

procedure SortByDescending(var a:mas;n:integer);
// Сортирует по невозрастанию первые n элементов массива a.
// Элементарная обменная сортировка
var
  i,j,t:integer;
begin
  for i:=1 to n-1 do
    for j:=1 to n-1 do
      if a[j]<a[j+1] then
        begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end
end;

// Основная программа
var
  i,n1,n2,n3,x,y:integer;
  a,b,c:mas;
begin
  Randomize;
  Write('Кол-во элементов в массиве и границы интервала из значений: ');
  Read(n1,x,y);
  RandomArray(a,n1,x,y);
  Write('Кол-во элементов в массиве и границы интервала из значений: ');
  Read(n2,x,y);
  RandomArray(b,n2,x,y);
  Write('Первый массив: '); PrintArray(a,n1);
  Write('Второй массив: '); PrintArray(b,n2);
  Writeln('Объединенный массив, отсортированный по невозрастанию');
  n3:=n1+n2;
  for i:=1 to n1 do c[i]:=a[i];
  for i:=1 to n2 do c[i+n1]:=b[i];
  SortByDescending(c,n3);
  PrintArray(c,n3)
end.

Тестовое решение
Кол-во элементов в массиве и границы интервала из значений: 8 10 60
Кол-во элементов в массиве и границы интервала из значений: 6 30 90
Первый массив: 41 56 14 57 52 51 30 54
Второй массив: 76 36 44 39 68 38
Объединенный массив, отсортированный по невозрастанию
76 68 57 56 54 52 51 44 41 39 38 36 30 14

2. На самом деле эту же задачу можно написать гораздо короче

// PascalABC.NET 3.1, сборка 1246 от 23.05.2016
begin
  var n1,n2,x,y:integer;
  Write('Кол-во элементов в массиве и границы интервала из значений: ');
  Read(n1,x,y);
  var a:=ArrRandom(n1,x,y);
  Write('Кол-во элементов в массиве и границы интервала из значений: ');
  Read(n2,x,y);
  var b:=ArrRandom(n2,x,y);
  Write('Первый массив: '); a.Println;
  Write('Второй массив: '); b.Println;
  Writeln('Объединенный массив, отсортированный по невозрастанию');
  var c:=(a+b).SortedDescending; c.Println
end.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота