Turbo Pascal Help
Создана: 29 Января 2013 Втр 20:20:19.
Раздел: "Нужна помощь"
Сообщений в теме: 37, просмотров: 6203
-
-
размеры массива нужно тоже задать как 1..n (раз цикл использует n, а не 10), а n определить константой, например (const n=10; в начале программы).
зачем вам массив вещественных чисел? как вы собираетесь отмечать состояние у каждого места? если 0 - свободно, 1 - бронь, 2 - выкуплено, то хватит и типа byte.
программой, приведённой выше, вы заполните массив нулями (т.е. изначально все места свободны), создав исходный файл.
в процессе выполнения программы вы будете записывать в нужные ячейки 1 или 2 в зависимости от того, что введёт пользователь (кстати, не увидел в меню режим бронирования, он будет в "покупке билетов"?). если пользователь выберет "выход", просто перезапишите массив в файл с помощью такого же цикла, только убрав "a[i,j]:=0;". да, и нужно ещё добавить считывание данных из файла в массив в начале программы (программа же должна не с пустого зала каждый раз начинаться). -
аЩКИМа писал : Вряд ли . Лет 10-15 назад последние вымерли.
Ну щас наговорите)))
По всему нэту полно этих людей и особенно
в тематических форумах.
Не что не вымирает!!!
Просто немного забывается.
Ещё скажите что Assembler тоже вымер)))
Только попробуйте на святое святых заикнуться!!!
Считайте что тогда у вас нет компа))))) сгорит сразу
до тла за такое грубое враньё!!!
И не уважения к старшим))))))))))))))))
-
Элементарно, Ватсон! Не нужно мудрить, вот моё предложение:
Код: var zal=array[1..20,1..30] of byte; {20 рядов по 30 мест в каждом}
Этот массив содержит образ всего зала в виде ряда значений, соответствующих состоянию каждого места. Например, 0 - место свободно (при создании массива весь зал будет пустой), 1 - место продано, 2 - место забронировано.
Для вывода состояния зала (отображение квадратов) на экран нужно, перебирая все ряды и места в зале, выводить на экран квадрат нужного цвета в зависимости от состояния текущего места.
Код: clrscr;
for i:=1 to 20 do
begin
for j:=1 to 30 do
case zal[i,j] of
0:begin
textbackground(green);
write(' ');
end
1:begin
textbackground(brown);
write(' ');
end;
2:begin
textbackground(red);
write(' ');
end;
end;
writeln;
end;
Связывать файл, содержащий массив, с экраном нужно таким образом:
а) Создали массив, отобразили cостояние зала на экране, записали массив в файл.
б) Продали/забронировали место в зале (присвоив соответствующему элементу массива значение 1 или 2), отобразили на экране состояние зала на основе изменённого массива, записали массив в файл.
Если что-то непонятно, спрашивайте. Можно прикрутить разных ништяков к этой программе. -
Вот тут [внешняя ссылка] дофига специалистов, подскажут без пространных рассуждений и языкового холивара. -
О, щас качну паскаль с этой сцылки и тряхну стариной, это же как на велосипеде ездить :)evgenyk писал :Вот тут [внешняя ссылка] дофига специалистов, подскажут без пространных рассуждений и языкового холивара. -
С dev-pascal трясти удобнейbeckman писал :
О, щас качну паскаль с этой сцылки и тряхну стариной, это же как на велосипеде ездить :)evgenyk писал ... :Вот тут [внешняя ссылка] дофига специалистов, подскажут без пространных рассуждений и языкового холивара. -
Готово (прошу прощения за мой инглиш, не стал кириллицу применять):
Код: Uses Crt;
Const
Rows=10;
Cols=25;
Filename='cinema.dat';
Type
TypeZal=array[1..Rows,1..Cols] of Byte;
Var
z:TypeZal;
Procedure ShowZal;
Var
i,j:Byte;
Begin
TextBackground(Black);
ClrScr;
Write(' ');
For j:=1 to Cols do Write(j:2,' '); WriteLn;
For i:=1 to Rows do
Begin
Write(i:2,' ');
For j:=1 to Cols do
Begin
Case z[i,j] of
0:TextBackground(Green);
1:TextBackground(Red);
2:TextBackground(Brown);
End;
Write(' ');
TextBackground(Black);
Write(' ');
End;
WriteLn; WriteLn;
End;
Write('(S)ell, (R)eserve of (F)ree seat, (W)rite or (L)oad file, (Q)uit: ');
End;
Procedure WriteZal;
Var
f:File of TypeZal;
Begin
Assign(f,'cinema.dat');
Rewrite(f);
Write(f,z);
Close(f);
End;
Procedure LoadZal;
Var
f:File of TypeZal;
Begin
Assign(f,'cinema.dat');
Reset(f);
Read(f,z);
Close(f);
End;
Procedure Menu;
Var
C:Char;
i,j:Byte;
q:Boolean; {Quit?}
Procedure GetSeat;
Begin
Write('Enter row number (1..',Rows,'):');
Repeat
ReadLn(i);
Until (i>0) and (i<=Rows);
Write('Enter seat number (1..',Cols,'):');
Repeat
ReadLn(j);
Until (j>0) and (j<=Cols);
End;
Begin
q:=False;
Repeat
ShowZal;
ReadLn(c);
Case c of
'S','s': Begin
GetSeat;
Case z[i,j] of
0:Begin
z[i,j]:=1;
WriteLn('Seat sold.');
End;
1:WriteLn('Seat already sold!');
2:WriteLn('Seat already reserved!');
End;
End;
'R','r': Begin
GetSeat;
Case z[i,j] of
0:Begin
z[i,j]:=2;
WriteLn('Seat reserved.');
End;
1:WriteLn('Seat already sold!');
2:WriteLn('Seat already reserved!');
End;
End;
'F','f': Begin
GetSeat;
Case z[i,j] of
0:Begin
z[i,j]:=1;
WriteLn('Seat released.');
End;
1:WriteLn('Seat already sold!');
2:WriteLn('Seat already reserved!');
End;
End;
'W','w': Begin
WriteZal;
WriteLn('File written.');
End;
'L','l': Begin
LoadZal;
WriteLn('File loaded.');
End;
'Q','q': Begin
WriteLn('Good bye!');
Q:=True;
End;
End;
Delay(65000);
Until Q;
End;
Begin
Menu;
End. -
-
-
-
-