problem s ulohou

Programovacie jazyky, rady, poradňa...
joejoe
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 733
Registrovaný: 03 apr 2007, 16:59

problem s ulohou

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

caute mam problem s ulohou ma to robit toto : zada pocet hier a pocitac nahodne vyhodi kamen papier alebo noznice a stav ci vyhral P1 alebo P2

vzor : zadaj pocet hier : 1

papier noznice vyhral hrac 2

0:1

vyhral hrac 2

inak viem ze tam mam moc premennych aj tie co nepouzivam :)

Kód: Vybrať všetko

program loool;
uses crt;
var a,b,c,d,p1,p2:integer;
var k,n,p:string;
begin
clrscr;
randomize;

writeln('zadaj pocet hier ');
readln(a);
{a - pocet hier}
for b:=1 to a do
    begin
          c:=random(+ 4);
          d:=random( + 4);
          case c  of
                 1: k:=' kamen   ' ;
                 2: k:=' papier  ' ;
                 3: k:=' noznice ' ;
                end;
                    case d  of
                 1: n:=' kamen   ' ;
                 2: n:=' papier  ' ;
                 3: n:=' noznice ' ;
                end;

     if (c=d) then begin  p:=' remiza ';
     {begin}

        {kamen}
        (tu hlasi error )else if  (c=1) and (d=2) then begin p2:=p2+1; p:=' vyhral P2'; end;
        else if (c=1) and (d=3) then begin p1:=p1+1; p:=' vyhral P1'; end;
        {papeir}
        else if  (c=2) and (d=1) then begin p1:=p1+1; p:=' vyhral P1'; end;
        else if  (c=2) and (d=3) then begin p2:=p2+1; p:=' vyhral P2'; end;
        {noznice}
        else if  (c=3) and (d=1) then begin p1:=p1+1; p:=' vyhral P1'; end;
        else if  (c=3) and (d=2) then begin p2:=p2+1; p:=' vyhral P2'; end;
     {end}
     end;
                writeln (k,n,p);
                writeln('P1..............P2')
                writeln(p1,'...............',p2);
                if p1 > p2 then writeln('vyhral P1');
                   else if  writeln('vyhral p2');




end;
readln;
write(k);
end.
hadze mi to error in statement :( dakujem za pomoc :)
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 if (c=d) then begin p:=' remiza '; nemá byť begin
joejoe
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 733
Registrovaný: 03 apr 2007, 16:59

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

stale to hadze ten isty error
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

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

pred ELSE nemoze byt bodkociarka ;
joejoe
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 733
Registrovaný: 03 apr 2007, 16:59

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

Kód: Vybrať všetko

program loool; 
uses crt; 
var a,b,c,d,p1,p2:integer; 
var k,n,p:string; 
begin 
clrscr; 
randomize; 

writeln('zadaj pocet hier '); 
readln(a); 
{a - pocet hier} 
for b:=1 to a do 
    begin 
          c:=random(+ 4); 
          d:=random( + 4); 
          case c  of 
                 1: k:=' kamen   ' ; 
                 2: k:=' papier  ' ; 
                 3: k:=' noznice ' ; 
                end; 
                    case d  of 
                 1: n:=' kamen   ' ; 
                 2: n:=' papier  ' ; 
                 3: n:=' noznice ' ; 
                end; 

     if (c=d) then p:=' remiza ' 
     {begin} 

        {kamen} 
        else if  (c=1) and (d=2) then	p2:=p2+1; p:=' vyhral P2' 
(ERROR)      else if  (c=1) and (d=3) then 	p1:=p1+1; p:=' vyhral P1'
        {papeir} 
        else if  (c=2) and (d=1) then  	p1:=p1+1; p:=' vyhral P1'
        else if  (c=2) and (d=3) then  	p2:=p2+1; p:=' vyhral P2'
        {noznice} 
        else if  (c=3) and (d=1) then 	p1:=p1+1; p:=' vyhral P1'
        else if  (c=3) and (d=2) then 	p2:=p2+1; p:=' vyhral P2' 
     {end}
    
                writeln (k,n,p); 
                writeln('P1..............P2') 
                writeln(p1,'...............',p2); 
                if p1 > p2 then writeln('vyhral P1'); 
                   else if  writeln('vyhral p2'); 




end; 
readln; 
write(k); 
end. 
teraz vyhadzuje error tam kde je (error ) pise ze to chce ; a ked ju tam dam tak error in statement
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 tých "else if" blokoch máš všade dva príkazy, tak musia byť obalene beginom a endom. Predtým si to mal dobre, až na ten jeden begin navyše čo som ti písal. Neviem prečo si pomazal všetky beginy a endy keď som ti napísal iba ten jeden riadok
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

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

Tu mas opravene vsetky syntakticke chyby:

Kód: Vybrať všetko

program loool;
uses crt;
var a,b,c,d,p1,p2:integer;
var k,n,p:string;
begin
clrscr;
randomize;

writeln('zadaj pocet hier ');
readln(a);
{a - pocet hier}
for b:=1 to a do
    begin
          c:=random(+ 4);
          d:=random( + 4);
          case c  of
                 1: k:=' kamen   ' ;
                 2: k:=' papier  ' ;
                 3: k:=' noznice ' ;
                end;
                    case d  of
                 1: n:=' kamen   ' ;
                 2: n:=' papier  ' ;
                 3: n:=' noznice ' ;
                end;

     if (c=d) then  p:=' remiza '
     {begin}

        {kamen}
        else if  (c=1) and (d=2) then begin p2:=p2+1; p:=' vyhral P2'; end
        else if (c=1) and (d=3) then begin p1:=p1+1; p:=' vyhral P1'; end
        {papeir}
        else if  (c=2) and (d=1) then begin p1:=p1+1; p:=' vyhral P1'; end
        else if  (c=2) and (d=3) then begin p2:=p2+1; p:=' vyhral P2'; end
        {noznice}
        else if  (c=3) and (d=1) then begin p1:=p1+1; p:=' vyhral P1'; end
        else if  (c=3) and (d=2) then begin p2:=p2+1; p:=' vyhral P2'; end;
     {end}
     end;
                writeln (k,n,p);
                writeln('P1..............P2');
                writeln(p1,'...............',p2);
                if p1 > p2 then writeln('vyhral P1')
                   else if p1<p2 then writeln('vyhral p2');




readln;
write(k);
end. 
Ale este zapracuj na programe samotnom, lebo mam pocit ze to nerobi to c ma :)
joejoe
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 733
Registrovaný: 03 apr 2007, 16:59

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

lebo aj ked som ho vymazal tak hadzalo chybu tak som skusil vsetky :)

Kód: Vybrať všetko

program loool; 
uses crt; 
var a,b,c,d,p1,p2:integer; 
var k,n,p:string; 
begin 
clrscr; 
randomize; 

writeln('zadaj pocet hier '); 
readln(a); 
{a - pocet hier} 
for b:=1 to a do 
    begin 
          c:=random(+ 4); 
          d:=random( + 4); 
          case c  of 
                 1: k:=' kamen   ' ; 
                 2: k:=' papier  ' ; 
                 3: k:=' noznice ' ; 
                end; 
                    case d  of 
                 1: n:=' kamen   ' ; 
                 2: n:=' papier  ' ; 
                 3: n:=' noznice ' ; 
                end; 

     if (c=d) then p:=' remiza ' 
     {begin} 

        {kamen}
        else if  (c=1) and (d=2) then begin	p2:=p2+1; p:=' vyhral P2' end;
       CHYBA else if  (c=1) and (d=3) then begin	p1:=p1+1; p:=' vyhral P1' end;
        {papeir} 
        else if  (c=2) and (d=1) then begin 	p1:=p1+1; p:=' vyhral P1'  end;
        else if  (c=2) and (d=3) then begin  	p2:=p2+1; p:=' vyhral P2' end; 	
        {noznice} 
        else if  (c=3) and (d=1) then begin	p1:=p1+1; p:=' vyhral P1' end;
        else if  (c=3) and (d=2) then begin	p2:=p2+1; p:=' vyhral P2'  end;
     {end} 

                writeln (k,n,p); 
                writeln('P1..............P2') 
                writeln(p1,'...............',p2); 
                if p1 > p2 then writeln('vyhral P1'); 
                   else if  writeln('vyhral p2'); 




end; 
readln; 
write(k); 
end. 
stale error in statement
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 »

kvôli tým bodkočiarkam pred else
základnú syntax by si mal vedieť keď chceš programovať
joejoe
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 733
Registrovaný: 03 apr 2007, 16:59

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

omg ja som taky debiiiiil.... dakujem...a mas pravdu :D
Napísať odpoveď