| | |
Autor | Správa |
---|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 Bydlisko: KK/PP/BA | Napísal F3RY: 17.01.2011 20:47 | |
|
dobry den.
venujem sa pascalu asi pol roka a potreboval by som radu.
ked napisem program, tak neviem aky prikaz musim pouzit, aby sa usera pytalo, ci chce pokracovat, alebo skoncit. ak zada pokracovat, program sa spusti znovu a ak nie, tak skonci.
a este jedna otazka ak chcem aby si user vybral medzi dvoma prikazmi, alebo programami tak cez co to spravim?
mozem ist cez podmienku if??
dakujem za rychle odpovede a cas straveny citanim mojho prispevku.
|
|
Registrovaný: 17.06.07 Prihlásený: 25.01.24 Príspevky: 258 Témy: 71 Bydlisko: Tvrdošín |
1.) daj si to do cyklu while alebo repeat until...
2.) case of
_________________ 92% teenagerů poslouchá a žije podla Hip-Hop,Jestliže patříš mezi zbylých 8%, dej si tuto větu do podpisu |
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 Bydlisko: KK/PP/BA | Napísal autor témy F3RY: 21.01.2011 16:16 | |
|
pitbull
mozes mi ten prikaz napisat? lebo som ho este nevidel a nemam ani sajnu ako ho spravim. dakujem
_________________ HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro
Boh je reálny, pokial nebol deklarovaný ako integer |
|
Registrovaný: 17.06.07 Prihlásený: 25.01.24 Príspevky: 258 Témy: 71 Bydlisko: Tvrdošín |
while (a='A') do
begin
.
.
.
.
.
writeln("Chcete pokracovat?")
a=readkey;
end;
syntax môže byť zlá... v pascale som nerobil neviem ako dlho
_________________ 92% teenagerů poslouchá a žije podla Hip-Hop,Jestliže patříš mezi zbylých 8%, dej si tuto větu do podpisu |
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal emer: 23.01.2011 15:14 | |
|
Ferdo, ked to hodis do googlu tak ti vyhodi prirucky so syntaxou a aj prikladmi. Skus si to pohladat.
Pre buducnost
Btw tiez som v pascale nerobil ani nepamatam ale ten riadok s readkey ma byt zrejme readln(a)
_________________ Sorry za prelkepy |
|
Registrovaný: 01.04.10 Prihlásený: 08.10.11 Príspevky: 339 Témy: 0 | Napísal Forty-: 23.01.2011 15:20 | |
|
ee nema byt readln, tu ide fakt o jeden char
akurat to nema byt:
a=readkey;
ale
a:=readkey;
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal emer: 23.01.2011 15:27 | |
|
aha, myslel som, ze to doplietol s nejakym inym jazykom, ja som sa s readkey ani nestretol, pascal som mal len tak zbezne v skole
_________________ Sorry za prelkepy |
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 Bydlisko: KK/PP/BA | Napísal autor témy F3RY: 29.01.2011 16:56 | |
|
ok skusal som to, ale to mi nefunguje...
vyskusal som to na jednom lahkom priklade s faktorialmi. dam sem zdrojak:
Kód: uses crt; var a,pocitadlo,i,b:integer; begin clrscr; while (b='B') do writeln ('zadajte cele cislo vo faktorialoch (!)'); readln (a); pocitadlo:=1; for i:=1 to a do pocitadlo:= pocitadlo * i; writeln ('faktorial z cisla ',a,' je ',pocitadlo,' . '); readln; writeln ('chcete pokracovat?'); a:=readkey; end.
v programe chyba nieje on mi isiel ale to opakovanie nie...
a este jedna vec aj ked ten program funguje tak z faktorialov mi pocita iba male cilsa. ak dam 20! tak mi uz vypise chybu.
neviem kde je chyba... mam tam udajovy typ integer a ten je do vyse 32 000. nefunguje ani ked tam dam longint...[/quote]
|
|
Registrovaný: 16.05.07 Prihlásený: 01.08.17 Príspevky: 837 Témy: 6 | Napísal juho: 29.01.2011 20:11 | |
|
no ked tvrdis ze integer je do 32000 tak urcite vies preco ti nefunguje faktorial 20tich
Kód: while (b='B') do writeln ('zadajte cele cislo vo faktorialoch (!)'); pokial bude v premennej b cislo 66 tak ti to bude vypisovat neustale a nikdy neprejde na nacitanie premennej a Kód: uses crt; var a,pocitadlo,i:integer; b:char; begin clrscr; repeat writeln ('zadajte cele cislo vo faktorialoch (!)'); readln (a); pocitadlo:=1; for i:=1 to a do pocitadlo:= pocitadlo * i; writeln ('faktorial z cisla ',a,' je ',pocitadlo,' . '); repeat writeln ('chcete pokracovat(a/n)?: '); b:=readkey; until (b='a')or(b='n'); until b='n'; end.
|
|
Registrovaný: 31.08.07 Prihlásený: 27.03.15 Príspevky: 1800 Témy: 153 Bydlisko: Komárno |
lebo nemas definovane ze to B musi byt char
_________________ Nehľadaj štastie vonku, ale v sebe, lebo inak ho nikdy nenajdeš. Nechajte mi právo na vlastné omyly, na možnosť zvoliť si čo mám rád, chcem ísť vlastnou cestou, nie tou vami vyšliapanou, na ktorej by som stratil vlastnú tvar. (Metallica) Všetko má svoju krásu, ale nie každý ju vidí. život je krásny, len sa ho nesmieš báť, dnes plačeš, zajtra sa budeš smiať. Učíme sa aby sme veciam rozumeli a mohli ich milovať |
|
Registrovaný: 27.12.08 Prihlásený: 13.12.22 Príspevky: 1874 Témy: 96 Bydlisko: Bratislava,... | Napísal nBXXL: 29.01.2011 21:45 | |
|
readkey je v kniznici crt, readln je standardnejsi..
dva cykle v sebe? Kód: if b = 'n' then break; by podla mna bolo lepsie..
btw: 20 factorial = 2.43290201 × 10^18.. to je trocha viac ako rozsah longintu :'
_________________ ~Listen to your brain, not your heart~ NB1: Lenovo Y500: CPU: Intel Core i7-3630QM; GPU: nVidia GT650M 2GB SLi; RAM: 16GB DDR3; HDD: 1TB + 256GB SSD (m4); LCD: 15,6" 1920x1080; OS: Win8.1 64-bit + Arch Linux 64-bit (UEFI Powered DualBoot) NB2: Asus K53SJ-SX093: CPU: Intel Core i3-2310M; GPU: Intel HD3000 / nVidia GT520M 1GB Optimus; RAM: 8GB DDR3; SSD: 128GB 840Evo; LCD: 15,6" 1366x768; OS: Win 8.1 Pro 64-bit (UEFI) |
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 Bydlisko: KK/PP/BA | Napísal autor témy F3RY: 29.01.2011 22:45 | |
|
juho píše: no ked tvrdis ze integer je do 32000 tak urcite vies preco ti nefunguje faktorial 20tich
Citácia: btw: 20 factorial = 2.43290201 × 10^18.. to je trocha viac ako rozsah longintu
vdaka neuvedomil som si to...
poznate nejaky vyssi udajovy typ ako je longint?
Juho vdaka za ten zdrojovy kod
|
|
Registrovaný: 27.12.08 Prihlásený: 13.12.22 Príspevky: 1874 Témy: 96 Bydlisko: Bratislava,... | Napísal nBXXL: 29.01.2011 23:02 | |
|
vyssi celociselny udajovy typ ako longint je int64.. ale ten funguje len funguje len vo freepascale, v turbopascale nefunguje.. alebo real a extended ale tie su realne a s presnostou na 12-18 desatinnych miest..
_________________ ~Listen to your brain, not your heart~ NB1: Lenovo Y500: CPU: Intel Core i7-3630QM; GPU: nVidia GT650M 2GB SLi; RAM: 16GB DDR3; HDD: 1TB + 256GB SSD (m4); LCD: 15,6" 1920x1080; OS: Win8.1 64-bit + Arch Linux 64-bit (UEFI Powered DualBoot) NB2: Asus K53SJ-SX093: CPU: Intel Core i3-2310M; GPU: Intel HD3000 / nVidia GT520M 1GB Optimus; RAM: 8GB DDR3; SSD: 128GB 840Evo; LCD: 15,6" 1366x768; OS: Win 8.1 Pro 64-bit (UEFI) |
|
Registrovaný: 16.05.07 Prihlásený: 01.08.17 Príspevky: 837 Témy: 6 | Napísal juho: 30.01.2011 18:44 | |
|
nBXXL píše: dva cykle v sebe? no pan brejker prezradte nam ze co by sa stalo keby podla vasho prikladu bolo stlacene nieco ine okrem 'a' a 'n' napriklad 'x' alebo sipka? a ako by sa potom cyklilo until false? bez podmienkovo?
_________________ getch();?{readkey;?} na konci? !A naco! Riesenie je (Alt+F5)
99% pochopí a shaggy je druhá kategória |
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 Bydlisko: KK/PP/BA | Napísal autor témy F3RY: 02.02.2011 20:30 | |
|
cawte
takze som si vyskusal na ten REPEAT viac takych programikov (aby som sa to naucil) a jeden mi nefunguje spravne...
ide o program, ktory nakresli kruhy v hociakej velkosti, a farby. ale na konci, ak sa spytam ci chce nakreslit este raz alebo skoncit, tak to zacne tu hlasku vypisovat za sebou a neda sa ten program vypnut mozno je to moja chyba, lebo som experimentoval s CRT a GRAPH kniznicami a neviem ci to moze tak byt.
screen (nechce sa mi cely prepisovat, alebo ak vie niekto nech poradi ako zdrojovy kod skopirovat z programu do text. suboru lebo mne to nejde)
|
|
Registrovaný: 04.03.09 Prihlásený: 21.09.13 Príspevky: 24 Témy: 0 |
1. Nicim neinicializujes premennu "B".
2. Zdrojovy kod mas ulozeny v subore grafika.pas, cize ho otvor napriklad cez notepad a mozes veselo kopirovat )))
|
|
Registrovaný: 17.06.07 Prihlásený: 25.01.24 Príspevky: 258 Témy: 71 Bydlisko: Tvrdošín |
chýba ti tam načítanie premennej "b"
_________________ 92% teenagerů poslouchá a žije podla Hip-Hop,Jestliže patříš mezi zbylých 8%, dej si tuto větu do podpisu |
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 Bydlisko: KK/PP/BA | Napísal autor témy F3RY: 05.02.2011 17:01 | |
|
ok dakujem nevsimol som si to
mozete mi este poradit ako spravim, to aby si uzivatel vybral medzi viacerymi pragramami? ako to spravit cez case of?
|
|
Registrovaný: 16.05.07 Prihlásený: 01.08.17 Príspevky: 837 Témy: 6 | Napísal juho: 05.02.2011 17:23 | |
|
radsej nerob aby si vyberal medzi viacerymi pragramami a nauc sa pascal od zakladov http://mojeskola.cz/Vyuka/Php/Kurzy/kurz_pascal.php
_________________ getch();?{readkey;?} na konci? !A naco! Riesenie je (Alt+F5)
99% pochopí a shaggy je druhá kategória |
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 Bydlisko: KK/PP/BA | Napísal autor témy F3RY: 05.02.2011 20:39 | |
|
juho píše: radsej nerob aby si vyberal medzi viacerymi pragramami a nauc sa pascal od zakladov http://mojeskola.cz/Vyuka/Php/Kurzy/kurz_pascal.php
ok dakujem vyzera to byt dobra stranka. pozriem na nu, ale v pascale niesom az taky zaciatocnik robim v nom uz vyse pol roka, ale ten web je lepsi, ako ten z ktoreho sa ucim ja...
|
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 Bydlisko: KK/PP/BA | Napísal autor témy F3RY: 19.02.2011 0:04 | |
|
skusal som nakodit jeden program ale nechce ist. kod:
Kód: uses crt; var p: array [1..100] of char; i,a,n,d,s: integer; begin clrscr; writeln ('stlacenim klavesy 1 sa zobrazia informacie o programe. Stlacenim lubovolnej klavesy sa spusti program pre vypocet aritmetickej postupnosti.'); readln (p); if p[i]=1 then begin clrscr; writeln ('email adress: Ferdo933@azet.sk'); writeln ('Ferdinand'); readln; end. else begin clrscr; writeln ('program pre vypocet aritmetickej postupnosti'); writeln ('zadajte a1 (hodnota prveho clena)'); readln (a); writeln ('zadajte n (pocet cisel)'); readln (n); writeln ('zadajte d (diferencia/rozdiel'); readln (d); s:=n-1; s:=s*d; {vzorec na vypocet AP postupnosti je an=a1+(n-1)*d} s:=s+a; writeln ('vysledok je ',s); readln; end.
ma problem s tymto: Kód: if p[i]=1 then begin neviem preco, ked ho mam definovany v poli a pise: incopatible types: got "char" expenced "longint".
a neviem ci som tie podmienky zakoncil spravne.
samozrejme, ze program este nieje dokonceny... to je len zaklad, na ktorom chcem pracovat. dakujem
|
|
Registrovaný: 17.06.07 Prihlásený: 25.01.24 Príspevky: 258 Témy: 71 Bydlisko: Tvrdošín |
char sa dáva do '1' a nie len 1
číslo 1 je integer
'1' je char
"1" je string
_________________ 92% teenagerů poslouchá a žije podla Hip-Hop,Jestliže patříš mezi zbylých 8%, dej si tuto větu do podpisu |
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | Napísal chrono: 19.02.2011 0:26 | |
|
Keď tam testuješ prvý znak, tak nie je rozumné používať premennú i (ktorá obsahuje 0 len preto, lebo si použil globálnu premennú).
|
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 Bydlisko: KK/PP/BA | Napísal autor témy F3RY: 19.02.2011 11:30 | |
|
vdaka, ale nefunguje to.
musi byt v niecom inom chyba.
premennu i som zmenil na x a vyzera to asi takto:
Kód: x: char; /string; if p[x]='1' then begin...
a stale pise to iste...
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 19.02.2011 12:01 | |
|
Evidentne nerozumies vsetkemu, co pises. Mas tam kopu chyb. Na riadku 8 sa snazis pouzivat premennu i, ktora nema definovanu hodnotu. Zmenil si to zasa zle - spravne si pouzil apostrofy pri '1', ale index pola (u teba x) nemoze byt char, lebo indexy pola p su u teba integery 1..100. Dalej tam vsade mas end s bodkou, to sa pouziva na konci celeho programu.
Nad tym, ci je tvoj algoritmus spravny, sa zamyslat radsej nejdem, ale napriklad to pole tam vyzera uplne zbytocne.
pitbull píše: char sa dáva do '1' a nie len 1 číslo 1 je integer '1' je char "1" je string Nie, string je tiez v apostrofoch.
|
|
Registrovaný: 17.06.07 Prihlásený: 25.01.24 Príspevky: 258 Témy: 71 Bydlisko: Tvrdošín |
v pascale som veľmi dlho nerobil... tak si nepamätám presne čo v tom je...
a k tomu poľu... p[i] = '1'
i je integer
p je pole charov - rozmer napr. 10
ak i=4 tak sa z poľa vytiahne položka číslo 4 (tá je typu char, keďže je to pole charov) a porovná sa s jednotkou => nie s číslom 1 ale so znakom(charom) 1
_________________ 92% teenagerů poslouchá a žije podla Hip-Hop,Jestliže patříš mezi zbylých 8%, dej si tuto větu do podpisu |
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 Bydlisko: KK/PP/BA | Napísal autor témy F3RY: 19.02.2011 16:10 | |
|
ahaaa vdaka pitbul uz som na to prisiel.
takze ak namiesto 1 mi nacita znak (napr. x) a mam ho zadefinovany pod integer tak to funguje
este poriesim s tym end a program by mal fungovat.
ps mam este jednu otazku ako zapisem vzorec do pascalu:
Kód: n Nx=N0(1+ p/100) napriklad 0.948 na 20....
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 19.02.2011 16:21 | |
|
|
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 Bydlisko: KK/PP/BA | Napísal autor témy F3RY: 19.02.2011 19:58 | |
|
vdaka duri
ale som zaciatocnik v programovani a nerozumiem tym prispevkom v teme.
ale mohlo by to ist takto?
Kód: (1+p/100) to vyrata a ulozi do premennej napr. B potom by to islo do cyklu for i:=1 to n do pocitadlo:=pocitadlo*b;
otazka cislo 2: ten program mi uz ide, ale nie tak, ako ma: Kód: uses crt; var p: array [1..100] of char; i,a,n,d,s,x: integer; b: char; begin repeat clrscr; writeln ('stlacenim klavesy X sa zobrazia informacie o programe. Stlacenim lubovolnej klavesy sa spusti program pre vypocet aritmetickej postupnosti.'); readln (p); if p[i]='x' then begin clrscr; writeln ('eamail adress: Ferdo933@azet.sk'); writeln ('Ferdinand'); readln; end else begin clrscr; writeln ('program pre vypocet aritmetickej postupnosti'); writeln ('zadajte a1 (hodnota prveho clena)'); readln (a); writeln ('zadajte n (pocet cisel)'); readln (n); writeln ('zadajte d (diferencia/rozdiel'); readln (d); s:=n-1; s:=s*d; {vzorec na vypocet AP postupnosti je an=a1+(n-1)*d} s:=s+a; writeln ('vysledok je ',s); readln; end; readln; repeat writeln ('chcete pokracovat? (a/n)'); b:=readkey; until (b='a') or (b='n'); until b='n'; end.
problem je v tom, ze ak stlacim x a potvrdim enterom, tak aj tak nereaguje a ide pocitat.
skusal som to dat cez readkey, ale tiez to nefunguje.
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | Napísal chrono: 19.02.2011 20:11 | |
|
Čo keby si si prečítal základy programovania v Pascale? Pretože robiť náhodné zmeny v kóde, až kým to začne fungovať, nie je zrovna najlepšia stratégia.
Čo podľa teba robí to p[i]='x' ? (a už si bol na ten problém upozornený)
|
|
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|