chyba v kode (pascal)

Programovacie jazyky, rady, poradňa...
peponr
Novice
Novice
Príspevky: 4
Registrovaný: 15 okt 2008, 22:40

chyba v kode (pascal)

Príspevok od používateľa peponr »

caute. robim si projekt do skoly a neustale mi to v jednej procedure vyhadzuje chybu... chybajuca bodkociarka. som tak trochu lavy na programovanie, takze tam nic nevidim :( . pomohol by mi s tym niekto?

Kód: Vybrať všetko

procedure stavky;
begin
hrac1k:=0;
repeat
readln (hrac1);
if hrac1 > konto then begin
writeln ('CHYBA! ZADAJ SUMU V MAX. VYSKE SVOJHO KONTA');
readln (hrac1);
hrac1k:= hrac1k + hrac1;
end;
if (hrac2karty[1] + hrac2karty[2]) < 30 then begin
hracpc:=0;
hrac2k:=0
else if 30 < (hrac2karty[1] + hrac2karty[2]) < 70 then begin
hracpc:= hrac1;
hrac2k:= hrac1
else if (hrac2karty[1] + hrac2karty[2]) > 70 then begin
hracpc:= hrac1+10;
if hracpc > konto2 then
hracpc:= hrac1;
until (hrac1k <> hrac2k) or (hrac1<>0) or (hracpc<>0);
end;
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

Kód: Vybrať všetko

procedure stavky; 
begin 
 hrac1k:=0; 
 repeat 
  readln (hrac1); 
  if hrac1 > konto then 
  begin 
   writeln ('CHYBA! ZADAJ SUMU V MAX. VYSKE SVOJHO KONTA'); 
   readln (hrac1); 
   hrac1k:= hrac1k + hrac1; 
  end; 
  
  if (hrac2karty[1] + hrac2karty[2]) < 30 then 
  begin 
   hracpc:=0; 
   hrac2k:=0 ;  ///TU
  END;    //TU
  else if 30 < (hrac2karty[1] + hrac2karty[2]) < 70 then 
  begin 
   hracpc:= hrac1; 
   hrac2k:= hrac1 ; ///TU
  END  //TU
  else if (hrac2karty[1] + hrac2karty[2]) > 70 then 
  begin 
   hracpc:= hrac1+10; 
  END; ///ASI AJ TU
  if hracpc > konto2 then hracpc:= hrac1; 
until (hrac1k <> hrac2k) or (hrac1<>0) or (hracpc<>0); 
end. //TU BODKA

audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

v riadku hrac2k:=0 ti chýba na konci bodkočiarka
a touto podmienkou som si neni istý či sa to dá takto zapísať:
else if 30 < (hrac2karty[1] + hrac2karty[2]) < 70 then begin alebo to bude treba spravisť s and
morfeusko
Medium Star
Medium Star
Príspevky: 395
Registrovaný: 19 mar 2008, 15:21
Bydlisko: Nitra
Kontaktovať používateľa:

Príspevok od používateľa morfeusko »

Treba to spravit cez 'and' hentak to nezoberie...
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

heh .. to som si ani nevsimol :)
peponr
Novice
Novice
Príspevky: 4
Registrovaný: 15 okt 2008, 22:40

Príspevok od používateľa peponr »

diky moc, uz to chybu nehadze... akurat sa mi vynoril este jeden problem.

Kód: Vybrať všetko

for i:= 1 to 12 do
pouzite[i]:= random (53-((0)and(pouzite[?????])));
takze 12 krat to vygeneruje jedno cislo okrem 0 a priradi to do pola... lenze potreboval by som, aby to generovalo cisla tak, aby sa uz pouzite neopakovali... dalo by sa to nejak zapisat namiesto tych otaznikov? alebo ako by sa to dalo spravit?
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

hmm .. do pascalu pridali za posledne roky nejaku pokrocilu logiku? :)
tak veru takuto konstrukciu by ma ani nenapadlo skusit .

chcem tym povedat ze toto ti urcite nepojde

ak chces generovat nahodnu postupnost bez opakovania tak to nie je take uplne trivialne ...
jedna moznost je spravit si pole s hodnotami z ktorych chces generovat (teda v tvojom pripade od 1 po 53)
potom si vygenerovat nahodne cislo z tohto intervalu a vymenit ho s prvym cislom (s prvkom na indexe 1)
nasledne to budes opakovat potrebny pocet krat ale pri vybere uz nebudes brat do uvahy uz vybrate prvky ...
teda v druhom kroku vyberes z intervalu 2 az 53 a vymenis to s druhym prvkom ... potom vyberes z intervalu 3 az 53 a vymenis s tretim atd..



a btw skor ako pouzijes nejaku funkciu .. skus si pozriet co vlastne robi
Napísať odpoveď