pascal
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: pascal
skôr som myslel niečo ako roundto
Re: pascal
dakujem vam za odpovede, ale nefunguje to
BX skusal som obidva tvoje prispevky, ale neulozi mi to tam...
pls poradte este... termin odovzdania sa blizi. program napisany je, ale pocita odveci....
BX skusal som obidva tvoje prispevky, ale neulozi mi to tam...
pls poradte este... termin odovzdania sa blizi. program napisany je, ale pocita odveci....
Re: pascal
Daj celý kód aj s tým ako si to skúšal.
Re: pascal
ok
oba programy vypisu: 0.00000000e+000
toto je zdrojovy kod na ktorom to skusam. mam sem dat aj zdrojovy kod toho programu?
oba programy vypisu: 0.00000000e+000
Kód: Vybrať všetko
uses crt;
var N0,n,pocitadlo,i,p: integer;
d: real;
begin
clrscr;
writeln ('zadaj N0');
readln (n0);
writeln ('zadaj n');
readln (n);
writeln ('zadaj p');
readln (p);
d:=p/100;
d:=(d+0.005)*100;
d:=trunc(d);
d:=d/100;
for i:=1 to n do
d:=pocitadlo*d;
d:=d*N0;
writeln ('cislo ',d );
readln;
end.Kód: Vybrať všetko
uses crt;
var N0,n,pocitadlo,i,p: integer;
d: real;
begin
clrscr;
writeln ('zadaj N0');
readln (n0);
writeln ('zadaj n');
readln (n);
writeln ('zadaj p');
readln (p);
d:=p/100;
d:=round(d*100)/100;
for i:=1 to n do
d:=pocitadlo*d;
d:=d*N0;
writeln ('cislo ',d );
readln;
end.-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: pascal
a aké vstupy tam zadávaš?
Re: pascal
ok chcel som tu pridat obrazok, ale to je zakazane tak som nahral ako prilohu. su tam vstupy a vystup.
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: pascal
ani v jednom prípade nemáš inicializované počítadlo na počiatočnú hodnotu, takže to d násobíš v cykle nulou a po opustení cyklu bude teda nulové. Z toho dôvodu tá nula
Re: pascal
mas pravdu. na to som zabudol
ale aj tak pri pouziti d:=round(d*100)/100; vyslo toto:
ale aj tak pri pouziti d:=round(d*100)/100; vyslo toto:
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: pascal
určite si ten vzorec zase nedovrzal?
http://www.hojko.com/post1601639.html#p1601639
http://www.hojko.com/post1601639.html#p1601639
Re: pascal
ano vzorec dodrziavam a aj tak to nejde
skusal som to este s dalsiou premennou:
zakazdym mi vychadzaju ine cisla. z toho mi vyslo: 1.04857600000000E+010
pravdupovedziac nerozumiem tomu, co mi toto spravi:
//autoeditácia príspevku (07 Mar 2011, 16:43)
ok aj tak uz na to asi nikto nepride. dal som to cez X:0:2 na zobrazenie. zubrazuje od veci, ale uz to nevadi.
mozete toto vlaknu locknut, alebo zaujmalo by ma ako sa to da spravit cez case of. Cize ak by mal niekto cas a chut, mohol by sem upnut zdrojovy kod za karmu.
audiotrack a BX mate dalsie K+
skusal som to este s dalsiou premennou:
Kód: Vybrať všetko
uses crt;
var N0,n,i,p: integer;
d,pocitadlo,c: real;
begin
writeln ('zadaj N0');
readln (n0);
writeln ('zadaj n');
readln (n);
writeln ('zadaj p');
readln (p);
d:=1;
c:=p/100;
c:=round(d*100)/100;
pocitadlo:=1+c;
for i:=1 to n do
d:=pocitadlo*d;
d:=d*N0;
writeln ('cislo ',d );
readln;
end.pravdupovedziac nerozumiem tomu, co mi toto spravi:
Kód: Vybrať všetko
d:=round(d*100)/100;
ok aj tak uz na to asi nikto nepride. dal som to cez X:0:2 na zobrazenie. zubrazuje od veci, ale uz to nevadi.
mozete toto vlaknu locknut, alebo zaujmalo by ma ako sa to da spravit cez case of. Cize ak by mal niekto cas a chut, mohol by sem upnut zdrojovy kod za karmu.
audiotrack a BX mate dalsie K+
Re: pascal
ešte k tomu X:0:2 -> myslím si že to 1. číslo musí byť >= ako 2. , vyskúšaj X:2:2 alebo X:2:0 ak tam nechceš mať desatinné čísla
Re: pascal
cawte. sorry ze zas otravujem, ale zase si neviem pomoct 
teraz programujem hru Black Jack hrac proti PC. zdrojovy kod:
v tomto programe som si nasiel par logickych chyb.
program funguje, ale:
1, neskonci ak to uzivatel zada, ale pokracuje, pokial cislo nieje vetsie ako 22.
2, ak namiesto klavesy k stisnem inu klavesu, napise informacie o hre, ale stale sa to opakuje a nejde to vypnut. ak to else vymazem, tak program pri stlaceni inej klavesy zamrzne.
3, na konci iba vypise slovo vysledky, ale neporovnava to.
chcem este do toho napisat black jack hrac proti hracovy, ale najskor musi toto fungovat.
dufam, ze ten zdrojak sa da citat
vopred dakujem.
teraz programujem hru Black Jack hrac proti PC. zdrojovy kod:
Kód: Vybrať všetko
uses crt;
var d,a,pocitadlo,e: integer;
p,u,z: char;
x: array [1..100] of char;
begin
randomize;
clrscr;
d:=0;
writeln ('Black Jack. Hrac proti pocitacu');
writeln;
writeln ('zadaj svoje meno');
readln (x);
writeln ('stlacenim pismena Z zrusis');
z:=readkey;
writeln ('stlacenim pismena K dostanes dalsiu kartu kartu');
readln (p);
repeat
a:=random (11)+1;
if p='k' then begin
writeln ('karta cislo ',a);
d:=d+a;
writeln ('sucet vsetkych kariet je ',d);
readln;
end
else begin
clrscr;
writeln ('INFORMACIE O HRE!');
writeln ('...');
end;
until (z='z') or (d > 22);
readln;
writeln ('karty ',d);
readln;
writeln ('pocitac');
pocitadlo:=0;
repeat
randomize;
e:=random (11)+1;
if pocitadlo < 16 then begin
writeln ('karta cislo ',e);
pocitadlo:=pocitadlo+e;
writeln ('sucet vsetkych kariet je: ',pocitadlo);
end;
until (pocitadlo>16);
readln;
writeln ('vysledky: ');
if (d > pocitadlo) and (d < 22) then writeln ('gratulujem vyhral/a si ',x);
if (pocitadlo > d) and (pocitadlo < 22) then writeln ('vyhral pocitac!');
if (d=pocitadlo) then writeln ('smola! nastla remiza, skus to este raz.');
readln;
end.
program funguje, ale:
1, neskonci ak to uzivatel zada, ale pokracuje, pokial cislo nieje vetsie ako 22.
2, ak namiesto klavesy k stisnem inu klavesu, napise informacie o hre, ale stale sa to opakuje a nejde to vypnut. ak to else vymazem, tak program pri stlaceni inej klavesy zamrzne.
3, na konci iba vypise slovo vysledky, ale neporovnava to.
chcem este do toho napisat black jack hrac proti hracovy, ale najskor musi toto fungovat.
dufam, ze ten zdrojak sa da citat
vopred dakujem.
Re: pascal
Tak som to tak narýchlo pomenil a prišiel som na pár vecí:
1.) Nepoužívaj toľko krát prázdny readln; Zbytočne to mýli.
2.) Skús začat používať procedúry a funkcie. Uľahčí ti to prácu a zjednoduší kód.
3.) randomize stačí volať raz v programe
4.) Tie informácie som vymazal, neviem čo si nimi myslel, ale sú tam na nič. Ak ich tam chceš, popíš čo to má byť.
5.) Toto nie je C, že si idem načítavať reťazec do poľa znakov. Pascal má na toto typ string. (BP mi to ani neskompiloval)
1.) Nepoužívaj toľko krát prázdny readln; Zbytočne to mýli.
2.) Skús začat používať procedúry a funkcie. Uľahčí ti to prácu a zjednoduší kód.
3.) randomize stačí volať raz v programe
4.) Tie informácie som vymazal, neviem čo si nimi myslel, ale sú tam na nič. Ak ich tam chceš, popíš čo to má byť.
5.) Toto nie je C, že si idem načítavať reťazec do poľa znakov. Pascal má na toto typ string. (BP mi to ani neskompiloval)
Kód: Vybrať všetko
uses crt;
var d,a,pocitadlo,e: integer;
p,u,z: char;
x: string;
begin
randomize;
clrscr;
d:=0;
writeln ('Black Jack. Hrac proti pocitacu');
writeln;
write ('zadaj svoje meno: ');
readln (x);
writeln ('stlacenim pismena Z zrusis');
writeln ('stlacenim pismena K dostanes dalsiu kartu kartu');
repeat
readln(p);
a:=random (11)+1;
if p='k' then begin
writeln ('karta cislo ',a);
d:=d+a;
writeln ('sucet vsetkych kariet je ',d);
end;
until (p='z') or (d > 22);
writeln ('tvoj sucet ',d,' | Stlac enter');
readln;
writeln ('pocitac');
pocitadlo:=0;
repeat
e:=random (11)+1;
if pocitadlo < 16 then begin
writeln ('karta cislo ',e);
pocitadlo:=pocitadlo+e;
writeln ('sucet vsetkych kariet je: ',pocitadlo);
end;
until (pocitadlo>16);
writeln ('vysledky: ');
if (d > pocitadlo) and (d < 22) then writeln ('gratulujem vyhral/a si ',x);
if (pocitadlo > d) and (pocitadlo < 22) then writeln ('vyhral pocitac!');
if (d=pocitadlo) then writeln ('smola! nastala remiza, skus to este raz.');
readln;
end.Re: pascal
dakujem ti. mas dalsiu
program je omnoho efektivnejsi, ako ten moj.
v com som mal chybu?? mohol to robit ten readln? alebo pole?
tie informacie som tam ani nechcel, ale dal som ich preto, lebo ked som zadal inu klavesu ako K tak program zamrzol.
//autoeditácia príspevku (13 Mar 2011, 19:51)
este by ma zaujmalo, co si spravil s tymi podmienkami na konci
mne to vobec nechcelo porovnat a program skoncil
program je omnoho efektivnejsi, ako ten moj.
v com som mal chybu?? mohol to robit ten readln? alebo pole?
tie informacie som tam ani nechcel, ale dal som ich preto, lebo ked som zadal inu klavesu ako K tak program zamrzol.
//autoeditácia príspevku (13 Mar 2011, 19:51)
este by ma zaujmalo, co si spravil s tymi podmienkami na konci
Re: pascal
Logiku zadávania si mal úplne zlú. Najprv si vypýtal z, potom p a až potom si šiel do cyklu. To bola najväčšia chyba. Ty chceš predsa opakovane odchytávať a porovnávať p, takže ho musíš odchytávať v cykle. To z tam je totálne zbytočne, pretože zadám ho pred cyklom a potom od neho závisí, či cyklus skončí, pričom v cykle s ním nič nerobím. Z toho vyplýva, že ak dám do z písmeno 'z', tak cyklus skončí po prvom. Ak zadám niečo iné, podmienka sa nikdy nesplní.
Takže p musíš odchytávať v cykle a podľa toho sa riadiť, či skončiť, alebo dať kartu.
No a od tohoto sa odvíjajú aj výsledky, to už mohlo hociako zblbnúť.
Z tohoto sa dá pochopiť, že to else tam bolo úplne zle a nič si s ním nedosiahol.
Ešte som zabudol šiesty bod
6.) Používaj trochu zmysluplnejšie názvy pre premenné.
Takže p musíš odchytávať v cykle a podľa toho sa riadiť, či skončiť, alebo dať kartu.
No a od tohoto sa odvíjajú aj výsledky, to už mohlo hociako zblbnúť.
Z tohoto sa dá pochopiť, že to else tam bolo úplne zle a nič si s ním nedosiahol.
Ešte som zabudol šiesty bod
6.) Používaj trochu zmysluplnejšie názvy pre premenné.
Re: pascal
Tu je trosku upraveny vas kod. Je tam vsak jedna vec, ktora nie je doriesena (nechcelo sa mi). Je to konkretne pripad ked potiahne ktosi 2xESO. Je to sice 22, ale je to tzv. kralovske OKO. To uz by sa museli pridavat dalsie podmienky. Skus dopracovat este tuto vec a mas to hotove.
Inak ste tam nemali vobec osetreny vypis v pripade prekrocenia hracom 21.
Kód: Vybrať všetko
Program Black_Jack;
uses Crt;
var
poradie,suma1,suma2,karta: Byte;
meno: string;
stl_kla: char;
BEGIN
Randomize;
ClrScr;
WriteLn ('BLACK JACK');
WriteLn;
Write ('zadaj svoje meno: ');
ReadLn (meno);
WriteLn;
WriteLn ('- stlacenim pismena ''z'' zrusis');
WriteLn ('- stlacenim pismena ''k'' dostanes dalsiu kartu');
WriteLn ('---------------------------------------------');
poradie:=1;
repeat
stl_kla:=ReadKey;
karta:=random (10)+2; {1 nie je, pretoze eso je za 11}
if stl_kla='k' then begin
WriteLn ('karta cislo ',poradie,'. = ',karta);
suma1:=suma1+karta;
inc(poradie);
WriteLn ('sucet kariet je: ',suma1);
end
until (stl_kla='z') or (suma1>21);
if suma1>21 then begin
suma1:=0;
WriteLn ('TROP');
end;
WriteLn ('---------------------------------------------');
WriteLn ('Na rade je pocitac');
poradie:=1;
repeat
karta:=random (10)+2;
WriteLn ('karta cislo ',poradie,'. = ',karta);
suma2:=suma2+karta;
inc(poradie);
WriteLn ('sucet kariet je: ',suma2);
until (suma2>15);
if suma2>21 then begin
suma2:=0;
WriteLn ('TROP');
end;
WriteLn ('---------------------------------------------');
WriteLn ('VYSLEDKY');
if (suma1>suma2) then WriteLn ('gratulujem, vyhral/a si ',meno,' s: ',suma1);
if (suma2>suma1) then WriteLn ('vyhral pocitac!');
if (suma1=suma2) then WriteLn ('smola! Nastla remiza, skus to este raz.');
ReadLn;
END.Re: pascal
dakujem BX za vysletlenie. uz som to pochopil
ja viem s tymi premennymi, budem mat problem, lebo sa chystam nakodit kasino
a skusim tam dat aj procedury a premenne.
GREGI
ja viem program som si uz osetril
1, namiesto:
som este dopisal
2, dopisal som: ak padla 21 tak pripisalo 2 body a oznamilo mu to, riesil som to cez dalsie podmienky. Na zlate oko som zabudol
3, program mi aj tak mrzol. zamrzol mi preto, lebo nevedel co ma urobit ak padne 16:
stacilo dat =
ale dakujem aj tebe, ten zdrojak vyzera zaujmavo, a je dobre prepracovany
. mas 
GREGI
ja viem program som si uz osetril
1, namiesto:
Kód: Vybrať všetko
if (d > pocitadlo) and (d < 22) then writeln ('gratulujem vyhral/a si ',x);
Kód: Vybrať všetko
if (d > pocitadlo) and (d < 22) or (pocitadlo > 22) then writeln ('gratulujem vyhral/a si ',x);
tak som spravil aj pre pocitac.
3, program mi aj tak mrzol. zamrzol mi preto, lebo nevedel co ma urobit ak padne 16:
Kód: Vybrať všetko
until (pocitadlo>16);
Kód: Vybrať všetko
until (pocitadlo>=16);