IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Daniel Novák:26.10.2017 16:34

Zdravím, potřeboval bych pomoct. Mám vytvořit program na téma koncertní sál, mám už sestavenou část, kde se mi zobrazí dvourozměrné pole představující sedadla a řady. Zjistí, je-li sedadlo volné. Když řekne uživateli, že je sedadlo volné, proběhla rezervace a chci zobrazit to stejné dvourozměrné pole se sedadly a řadami, ale 0 se změní na x jakože už je obsazené. Jenže mě se to nové pole zobrazí jen když po tom co proběhla rezervace kliknu na nějaké číslo (Což nechápu vůbec) a ještě se mi rozháže celá poslední řada. Posílám zdrojový kód, snad mě chápete a někdo bude schopen mi pomoci.
program koncertnisal;
uses crt;
const max = 2; r = 10; s = 8; cena = 200;
var a:array[1..max,1­..max] of integer;

procedure zahlavi;
var i:byte;
begin for i:=0 to s do write(i:3,'s'); writeln;
end;

procedure generuj;
var i,j: byte;
begin
randomize;
for i:=1 to r do
begin
for j:=1 to s do
begin
if (i=1) and (j=1) then zahlavi;
a[i,j] := random(max);
if j=1 then write(i:3,'r');
if a[i,j] = 0 then write('x':4);
if a[i,j] = 1 then write('o':4);

end;
writeln;
end;
end;
procedure mezera;
begin
writeln;
writeln;
end;

procedure rezervace;
var mojerada , mojesedadlo : byte;
begin
writeln('Zadej cislo rady');
readln(mojerada) ;
writeln('Zadej sedadlo');
readln(mojese­dadlo);

if a[mojerada,mo­jesedadlo] = 1 then writeln('Zadane sedadlo je volne')
else begin writeln('Toto je obsazene, zadej nove sedadlo'); rezervace; end;
if a[mojerada,mo­jesedadlo] = 1 then begin
a[mojerada,mo­jesedadlo]:= 0;
end; writeln('Probehla rezervace'); readln(a[moje­rada,mojeseda­dlo]);
end;

procedure novysal;
var i,j: byte;
begin
for i:=1 to r do
begin
for j:=1 to s do
begin
if (i=1) and (j=1) then zahlavi;
if j=1 then write(i:3,'r');
if a[i,j] = 0 then write('x':4);
if a[i,j] = 1 then write('o':4);

end;
writeln;
end;
end;
{hlavni program}
begin
clrscr;
generuj;
mezera;
rezervace;
novysal;
mezera;

readln;
end.

 
Odpovědět
26.10.2017 16:34
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Daniel Novák
Martin Dráb:26.10.2017 22:03

Jeden z problémů tkví v tom, že tvůj konzertní sál reprezentuješ dvojrozuměrným polem a, které ale má pouze dvě řady a dva sloupce (max = 2). Měl bys jej deklarovat jako:

a : Array [1..r, 1..s] Of Integer;
Nahoru Odpovědět
26.10.2017 22:03
2 + 2 = 5 for extremely large values of 2
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.