Решал задачки другану, в технаре учится (программист
) Вообще кому надо - смотрите, оптимайзите. Сорри за паскаль, но там си не понимают
Задача
Написать программу «Кинозал».
Программа запрашивает количество билетов и расположение мест (т. е. ряд и место). В случае если места в указанной зоне уже заняты, то предложить на любое место.
После запроса программа выдает ряды, места и сумму билетов.
Программой должна быть предусмотрена возможность отказаться от этих билетов
Решение
const
first_to_third=50; {стоимость билетов}
fourth_to_eight=80;
larger_than_8=100;
var
places:array[1..10,1..10] of integer; {массив мест в кинотетре}
t_coast,t_pl:integer; {t_coast-выручка,t_pl - количество проданных мест}
function Coast(var row:integer):integer; {вычисляет и возвращает цену за ряд}
begin
case row of
1..3 : Coast:=first_to_third;
4..8:Coast:=fourth_to_eight;
9..10: Coast:=larger_than_8;
else Writeln('Wrong row');
end;
end;
procedure PrintPlaces; {вывод на экран содержимого массива}
var
i,j:integer;
begin
for i:=1 to 10 do begin
for j:=1 to 10 do begin
if (places[i,j]<>0) then begin
Writeln('Cell: ',i,' Row: ',j,' Coast: ',Coast(i));
t_coast:=t_coast+Coast(i);
inc(t_pl);
end;
end;
end;
Writeln('-------------------------------------------------------');
Writeln('Tickets was bought: ',t_pl,' Money was earned: ',t_coast);
end;
procedure FindFree;
var
i,j:integer;
begin
for i:=1 to 10 do begin
for j:=1 to 10 do begin
if (places[i,j]=0) then begin
Writeln(' Free place! ',i,',',j); {занимает свободное место}
places[i,j]:=1;
Writeln(' Coast: ',Coast(j));
Exit;
end;
end;
end;
end;
var
tick_num,x,y,i:integer;
ans:char;
label more;
begin
more: Write('To buy(1), to return money(2): ');
Readln(x);
if (x=1) then begin
Write('Input number of tickets: ');
Readln(tick_num);
for i:=1 to tick_num do begin
Write('Input cell: ');
Readln(x);
Write('Input row: ');
Readln(y);
if (places[x,y]=1) then FindFree else places[x,y]:=1;
end;
Writeln('Once more?(y/n) ');
Readln(ans);
if (ans='y') then goto more;
if (ans='n') then PrintPlaces;
Readln;
end
else begin
Write('Input cell: ');
Readln(x);
Write('Input row: ');
Readln(y);
if (places[x,y]=1) then begin
places[x,y]:=0;
Writeln('Money returned: ',Coast(y));
Readln;
end
else begin
Writeln('This place is free! ');
Writeln('Once more?(y/n) ');
Read(ans);
if(ans='y') then goto more;
end;
end;
end.