IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Типизированные файлы, я в шоке ...
Art87
сообщение 26.11.2005 17:44
Сообщение #1


snoWolf
**

Группа: Пользователи
Сообщений: 80
Пол: Мужской
Реальное имя: Артем

Репутация: -  0  +


Задали задачку... Так сказать "финальный аккорд" mega_chok.gif

Составить программу, помогающую сообщать сведения о местах на авиарейсы из Москвы в Иркутск на календарный месяц (30 дней). В файле прямого доступа хранится информация о местах на рейс на заданное число в виде матрицы, в которой
номер строки – ряд
номер столбца – номер места в ряду (всего 25 рядов по 6 мест в ряду).
Элемент матрицы может иметь следующие значения:
0 – место свободно,
1 – место продано,
2 – место забронировано.
Считать, что в день имеется один рейс. Файлы имеют имена следующего типа: «DAYNN», где NN – число на которое хранится информация.
Например: «DAY15» - в этом файле хранятся сведения о местах на рейс отправляющийся 15-го числа. По требованию сообщать следующую информацию:

- о количестве свободных мест
- о проданных местах на заданное число
- о проданных местах на весь месяц
- о брони на весь месяц
- о брони на заданное число
Смоделировать покупку, бронирование и сдачу авиабилета.

Я в шоке ... Такого еще не было.
Блин, даже не знаю с чего начать ...


--------------------
Нас десять братьев на тропе, идем мы быстро, на легке ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 4)
Дож
сообщение 26.11.2005 18:24
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 179
Пол: Мужской

Репутация: -  1  +


Цитата(Art87)
даже не знаю с чего начать ...


Начни с этого:
http://forum.pascalnet.ru/index.php?showtopic=2694(Матрицы/Массивы)
http://forum.pascalnet.ru/index.php?showtopic=3584(Файлы)
http://forum.pascalnet.ru/index.php?showtopic=6011&hl=(Базы данных)

Сообщение отредактировано: Дож - 26.11.2005 18:28


--------------------
Доброго времени суток.
:nnn:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 26.11.2005 19:29
Сообщение #3


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Формализуем задачу.

В типизированном файле записанна матрица 25x6

Требуется посчитать в матрице кол-во элементов равных t.
(и некоторые другие действия для других подзадач)

Реализовав это все остальное реализуется просто.
вот тебе основа если хочешь... я кое что реализовал тебе лишь добавить немного осталось... весь интерфейс для файловой работы реализован..

uses crt;
Type
 ATable = array[1..25,1..6]of byte;
Var {global}
 f:file of ATable;


Procedure ReadMatr(var A:Atable);
var
 i,j:word;
begin
 For i:=1 to 25 do begin
  for j:=1 to 6 do begin
   write('A[',i,j,']= ');
   readln(A[i,j])
  end;
  clrscr;
 end
end;

Procedure PrintMatr(A:Atable);
Var
i,j:word;
begin
 For i:=1 to 25 do begin
  For j:=1 to 6 do write(A[i,j],' ');
  writeln;
 end
end;

procedure writetable(filename:string; tabl:Atable);
begin
 Assign(f,filename);
 rewrite(f);
 write(f,tabl);
 close(f);
end;

procedure ReadTable(filename:string; var tabl:ATable);
begin
 Assign(f,filename);
 reset(f);
 read(f,tabl);
 close(f);
end;

Procedure GetCount(nn:byte);
var
 mn,selcase,i,j,s:byte;
 fn:string;
 A:ATable;
begin
repeat
        clrscr;
        write('enter day: '); readln(mn);
        if (mn<1) or (mn>31) then writeln('error!') else begin
         str(mn,fn);
         fn:='DAY'+fn;
        end
       until (mn>=1) and (mn<=31);
       readtable(fn,A);    s:=0;
       for i:= 1 to 25 do begin
        for j:=1 to 6 do begin
         if a[i,j]=nn then inc(s);
        end;
       end; writeln(s);
       writeln('OK! press any key...'); readkey
end;

var
 mn,selcase,i,j,s:byte;
 fn:string;
 A:ATable;
begin

 repeat
  clrscr;
  writeln('1. Enter table');
  writeln('2. free seats');
  writeln('3. sold seats (day)');
  writeln('4. sold seats (month)');
  writeln('5. reserved seats (month)');
  writeln('6. reserved seats (day)');
  writeln('--------------------------------');
  writeln('7. purchase of ticket');
  writeln('8. reserve ticket');
  writeln('9. return ticket');
  writeln('exit   ->  ');
  selcase:=ord(readkey);
  if (selcase >=48) and (selcase<=60) then dec(selcase,48);
  case selcase of
   1: begin
       repeat
        clrscr;
        write('enter day: '); readln(mn);
        if (mn<1) or (mn>31) then writeln('error!') else begin
         str(mn,fn);
         fn:='DAY'+fn;
        end
       until (mn>=1) and (mn<=31);
       readmatr(A);
       writetable(fn,A);
       writeln('file ',fn,' created! press any key...'); readkey
      end;
   2: begin
       GetCount(0);
      end;

   3: begin
       GetCount(1);
      end;
   4: begin

      end;
   5: begin
      end;
   6: begin
       GetCount(2);
      end;
   7: begin end;
   8: begin end;
   9: begin end;
  end;
 until selcase=27;
end.



реализованные функции протестировал.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Art87
сообщение 27.11.2005 5:27
Сообщение #4


snoWolf
**

Группа: Пользователи
Сообщений: 80
Пол: Мужской
Реальное имя: Артем

Репутация: -  0  +


Altair
Спасибо огромное!!!


--------------------
Нас десять братьев на тропе, идем мы быстро, на легке ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Romtek
сообщение 27.11.2005 9:54
Сообщение #5


Знаток
****

Группа: Пользователи
Сообщений: 303
Пол: Мужской
Реальное имя: Роман

Репутация: -  2  +


Цитата
о количестве свободных мест
Подсчитать кол-во нулей в матрице.
Цитата
о проданных местах на заданное число
Считать матрицу из файла за данный день и подсчитать кол-во единиц.
Цитата
о проданных местах на весь месяц
Тоже самое, но считав за весь месяц.
Цитата
- о брони на весь месяц
- о брони на заданное число
в том же духе.
Ну очень сложное задание! blink.gif
Главная проблема - это как считать матрицу из файла или как посчитать кол-во нулей в матрице??


--------------------
Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 31.07.2025 5:51
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"