Помощь - Поиск - Пользователи - Календарь
Полная версия: Работа с информацией сложной структуры
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Hammer
Составить программу, помогающую сообщать сведения о местах на авиарейсы из Моск-вы в Ленинград на календарный месяц (30 дней). В памяти хранится информация о мес-тах на рейс на заданное число в виде матрицы, в которой номер строки – ряд, номер столбца – номер места в ряду (всего 25 рядов, по шесть мест в ряду). Элемент матрицы может иметь следующие значения: 0 — место свободно, 1 — место продано, 2 — место забронировано. Считать, что в день имеется один рейс. По требованию сообщать сле-дующую информацию:
о свободных местах на заданное число;
о проданных местах на заданное число;
о количестве свободных мест на весь месяц;
о брони на заданное число.


Подкиньте пару идей...
volvo
Hammer
Цитата
Подкиньте пару идей...

Идей насчет чего? Все же уже придумано, осталось только реализовать, но это уже не идеи, а исходники... :D
И потом: "Количество свободных дней на весь месяц" подразумевает, что есть возможность просматривать данные на месяц вперед. Данные об одном рейсе хранятся в виде матрицы - это прекрасно, но как они связаны между собой? Массив матриц? Список?
Hammer
Ну помогите тогда реализовать... :D
Такая формулировка меня тоже смущает, наверно в памяти хранится вся информация на весь месяц.

Как сформировать 30 матриц и загнать их в файл?
LLIRIKS
Код

for I:=1 to 30 do
 begin
   for J:=1 to N do
     for K:=1 to M do
       begin
         readln(A[J,K]);
       end;
   write(F,A);
 end;

вроде бы так...
F - файл типа A.
A - вводимая матрица NxM.
volvo
LLIRIKS
А ведь массив может быть не только двумерным... rolleyes.gif
Код

const
 days = 31;
 rows = 25; {число рядов в салоне}
 cols = 6; {число кресел в ряду}
type
 infotype = array[1 .. days, 1 .. rows, 1 .. cols] of byte;
var
 info: infotype;
 f: file of infotype;
begin
  ... {заполнение массива info}
 write(f, info); {и запись сразу всего массива}
end.
Guest
я имел ввиду 30 разных матриц
LLIRIKS
Цитата(Guest @ 19.12.04 15:04)
я имел ввиду 30 разных матриц

фишка вот в чем:
вводишь 1-ю (I:=1) матрицу под именем A, скидываешь в файл F (при этом указатель переходит на следующую позицию), потом вводишь 2-ю (I:=2) матрицу под тем же именем A (старая обновляется - но это не страшно, ведь она уже записана в файле ;) ), скидываешь 2-ю матрицу в файл (указатель двигается дальше) и т.д. до 30-й матрицы (I:=30)...
Guest
Код

program pr2;
type infotype=array [1..26,1..6] of integer;
var
info: file of infotype;
f:string;
a:infotype;
i,j,k:integer;
begin
writeln ('Введите имя файла ');
readln(f);
Assign(info,f);
Rewrite(info);
randomize;
for k:=1 to 30 do
begin
for i:=1 to 25 do
for j:=1 to 6 do
begin
a[i,j]:=random(3);
end;
write(info,a);
end;
close (info);
readln;
end.



Че здесь не так? Объясните пожалуйста


И как потом считать эти матрицы из файла, чтобы с ними можно было проводить дальнейшие действия, описанные в условии?
Digitalator
Кстати меня всегда удивляет, почему вопрос "объясните пожалуйста" задают на форуме, а не у препода на лекции... unsure.gif
LLIRIKS
Цитата(Guest @ 19.12.04 17:09)
Че здесь не так? Объясните пожалуйста

А какую ошибку выдает?
в каком месте?
Guest
Ошибки не выдает, но в файл записывает какие-то квадратики... или так и должно быть?
APAL
так и должно быть - файл то не текстовый.
LLIRIKS
для того чтобы считать данные из файла:
Код

for I:=1 to 30 do
 begin
   read(F,S);
   for J:=1 to 26 do
     for K:=1 to 6 do
       writeln(S[J,K]);
 end;

попробуй так, вроде должно пойти...
Guest
А как тогда сделать так, чтобы при считывании, каждой матрице присваивался бы свой номер (1-30 дней)
Guest
Объясните хотя бы сам алгоритм решения задачи, а то у меня ничего не получается...
Я делаю так: генерирую случайным образом 30 матриц и заношу их в файл, далее надо их как-то считать и присвоитть каждой матрице свой порядковый номер (типа a1 a2 a3...), чтобы можно было по требованию пользователя выдать какие-то данные на определенное число.
Помогите sad.gif , а то завтра последний срок сдачи!
Заранее спасибо!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.