Stránka 1 z 2

pascal

Napsal: stř 6. čer 2007, 08:26
od Shorty
mohl by mi nekdo pomoci s timto programem v pascalu?
vytvor nekolik lekci, udelejte body, umoznete zkouset jak anglicka tak ceska slovicka.Pripravene lekce budou v textovem souboru.

dik za rady a navrhy!

Napsal: stř 6. čer 2007, 09:33
od Shorty
potřeboval bych aspon kostru toho programu... :sad:

Napsal: stř 6. čer 2007, 21:11
od pavel.minarik
pane kolego :lol: toje zadani z prdele, takhle jsi to urcite nedostal
udelat slovicka a zkouset slovicka neni zadny problem, lekce a body jsou skutecne uz nejasne :wink:

Napsal: stř 6. čer 2007, 22:20
od Lukfi
Tak, základní kostra bude asi taková že tam bude nějaký menu a podle zvolené možnosti to bude vykonávat daný kód - tohle se dělá pomocí

Kód: Vybrat vše

case a of
1: begin
   end;
2: begin
   end;
pro ukončení to bude buď v repeat cyklu s podmínkou until a=něco nebo na nějakou volbu dáš příkaz halt.

s těmi soubory ti ale nepomůžu, jestli máš učebnici na pascal (tu od computer press) tak se podívej, tam je to docela hezky vysvětlené.[/code]

Napsal: čtv 7. čer 2007, 14:52
od Shorty
no dik za rady ale to ze mam zacit beginem a pouzit na vyber lekci case of vim taky...
spis mi de o to v jakem poradi to sepsat, nebo jakym zpusobem...
vim ze se asi nikomu nebude chtit tady napsat hotovy program, ale nevim jak to nastrukturovat...

Napsal: čtv 7. čer 2007, 14:55
od Lukfi
aha, takže ne programátorský problém, ale problém spíše obecný? s tím ti tady asi neporadíme...

Napsal: pát 8. čer 2007, 11:10
od Zivan
No je to urcite nejaka skolni uloha, ale z toho popisu nikdo nic nepochopi.

Vytvor nekolik lekci. Umoznete zkouset anglicka i ceska slovicka.

To ma byt preklad? Doplnovani do vet? Nebo jen tak nahodne zkouset slovicka? :-)

Udelejte body

Bud je to preklep a ma byt "udelujte" nebo se maji pri spusteni udelat na obrazovce barevne body?

Napsal: pát 8. čer 2007, 11:18
od zombux
věštím z toho že asi nějaký test slovíček, a nějak to obodovat...

Napsal: pát 8. čer 2007, 22:49
od VasekB
1- nactes soubor se slovicky: CZ do jednoho pole a (treba) EN do druheho pole
2- zobrazis na obrazovce (podle predchoziho vyberu, ktery jde kdykoliv zmenit) CZ slovicko a cekas na zadani EN verze od uzivatele.
3- pokud je zobrazene CZ = uzivatelem zadane EN, dostane +1 bod, jinak -1bod
4- pokud vycerpa vsechna slovicka ze souboru 1_lekce, nacti soubor 2_lekce, ....
5- zpet na bod 2

v pascalu se na prochazeni pole krasne daji pouzit Pointry (ukazatele) /a rekl bych, ze to je zamer zadani/

Napsal: pát 8. čer 2007, 23:04
od Lukfi
Jak se vlastně používají pointery? Za ten rok co se ve škole učíme pascal se ještě nikdo neobtěžoval nám to vysvětlit...

Napsal: sob 9. čer 2007, 06:09
od VasekB
no, ucil jsem se pascal pred 10lety a pouzival pak asi 3roky... ted uz si moc nepamatuju. na ukazku koukni treba sem:
http://www.learn-programming.za.net/pro ... arn13.html

princip je takovy, ze je to vlastne promena, ktera muze mit vic vlastnosti.

treba si nadefinujes, ze promena "Polozka" je typu pointer a ze ma vlastnosti DATA, PREDCHOZI, DALSI.
nactes si soubor a prochazis jednotive radky v souboru a cpes je do DATA. do PREDCHOZI nacpes odkaz na predchozi Polozku a do dalsi tu co bude dalsi (nejdriv je to prazdne, ale pak kdyz prolejzas jednotlive Polozky, abys to vypsal, tak si to samo pamatuje co je dalsi).

funkcne je to prakticky podobne typu Array(), jenze v Array kdyz si oindexujes prvky, ktere tam nacpes (treba 1-10) a chces tam doprostred neco pridat, tak to musis cele prepocitat a preindexovat, coz je pri vic datech problem. u pointru to neni problem. proste se podivas, kam ukazuje pointer promene PREDCHOZI a DALSI a nacpes mezi ne novou hodnotu.

nekde mam svuj stary program, co jsem na toto tema delal. bylo to taky seznam casopisu. zkusim ho vyhrabat a poslu ti to

Napsal: sob 9. čer 2007, 07:48
od Lukfi
no my jsme se zatím neučili ještě ani soubory... i když nemůžu říct že by mi to nějak extra chybělo. ale jestli ten program najdeš, tak ho pošli, rád se na to podívám.

Napsal: sob 9. čer 2007, 11:02
od Shorty
VasekB píše:1- nactes soubor se slovicky: CZ do jednoho pole a (treba) EN do druheho pole
2- zobrazis na obrazovce (podle predchoziho vyberu, ktery jde kdykoliv zmenit) CZ slovicko a cekas na zadani EN verze od uzivatele.
3- pokud je zobrazene CZ = uzivatelem zadane EN, dostane +1 bod, jinak -1bod
4- pokud vycerpa vsechna slovicka ze souboru 1_lekce, nacti soubor 2_lekce, ....
5- zpet na bod 2

v pascalu se na prochazeni pole krasne daji pouzit Pointry (ukazatele) /a rekl bych, ze to je zamer zadani/
dik za rady!dneska se do toho pustim... jinak pointry sme se taky neucili, takze skoda. podle toho co o nich ctu by se asi hodily do toho programu...zkusim se s tim nejak poprat a dam pak info jak to slo;)

Napsal: sob 9. čer 2007, 23:18
od VasekB
mas stesti, podarilo se mi vyhrabat 1CD, kde ten zdrojak jeste byl.
psal jsem to v roce 1997 a od te doby jsem pascal nepouzil. nekam ti t hodim

Napsal: ned 10. čer 2007, 12:22
od Lukfi
no?

Napsal: ned 10. čer 2007, 12:53
od VasekB
Lukfi> aha.. hodil jsem to nekam shortymu, tebe jsem si nevsimnul, ze mas take zajem ;o))
http://home.tiscali.cz/~cz707702/AMRA.zip

Napsal: ned 10. čer 2007, 13:05
od Lukfi
dík, pak se na to podívám.

Napsal: stř 13. čer 2007, 12:00
od Shorty
tak tady je muj vysledek snazeni... ma to jeste nejake mouchy,je to mozna neprehledne ale neni to snad nejhorsi... :wink:
(*zaverecny program*)
program slovicka;
uses crt;
var f,fi:text;
jaz,s,x,spravna,soubor,jaz_s,ukoncit:string;
i,kolikata,body,pocet_radku,konec,pocatek,jak,lekce:integer;
odpoved: char;
otazka:array[1..5] of string;
pocet_otazek: real;
begin
writeln('Vtejte v programu zkouseni slovicek');
writeln('------------------------------------');
writeln(' CHCETE VYZKOUSET Z ');
writeln(' 1) cestiny do anglictiny ');
writeln(' nebo ');
writeln(' 2) anglictiny do cestiny ');
writeln('------------------------------------');
writeln('I Zvolte prosm svou volbu cislem I');
writeln('------------------------------------');
writeln('Vytvoril : Petr Turzik');
writeln('');
write('->>');
read(jak);

case jak of
1: begin jaz:='CA'; jaz_s:='anglicky'; end;
2: begin jaz:='AC'; jaz_s:='cesky'; end;
else begin write('Opakujte prosim zadani, volba neexistuje:'); read(jak); end
end;

clrscr;

write('Zvolte lekci(1-5):');
read(lekce);
clrscr;

case lekce of
1: soubor:='C:\pascal\pt\lekce\lek'+jaz+'_1.txt';
2: soubor:='C:\pascal\pt\lekce\lek'+jaz+'_2.txt';
3: soubor:='C:\pascal\pt\lekce\lek'+jaz+'_3.txt';
4: soubor:='C:\pascal\pt\lekce\lek'+jaz+'_4.txt';
5: soubor:='C:\pascal\pt\lekce\lek'+jaz+'_5.txt';
else
begin write('Opakujte prosim zadani, lekce neexistuje:'); read(lekce); end
end;

(*nabourame soubor*)
assign(f,soubor);
assign(fi,soubor);
reset(f);
reset(fi);
(*zjistime pocet otazek*)
repeat
readln(fi,x);
pocet_radku:=pocet_radku+1;
until eof(fi);
pocet_otazek:=pocet_radku/5;

kolikata:=1;
pocatek:=1;
konec:=5;

repeat
begin

if(kolikata>1) then
begin
pocatek:=pocatek+5;
konec:=konec+5;
end;

writeln('Otazka cislo:',kolikata,'/',pocet_otazek:0:0,' Zatim bodu:',body,'z',pocet_otazek:0:0);

for i:=1 to 5 do
begin
readln(f,s);
otazka:=s;
end;

writeln('');
writeln('Jak se ',jaz_s,' rekne ',otazka[1],'?');
writeln('--------------');
writeln('a)',otazka[2]);
writeln('b)',otazka[3]);
writeln('c)',otazka[4]);

odpoved:=readkey;
spravna:=otazka[5];

case odpoved of
'a': odpoved:='a';
'b': odpoved:='b';
'c': odpoved:='c';
else
begin
write('Opakujte prosim zadani, tato moznost neexistuje:');
odpoved:=readkey;
end
end;

if odpoved=spravna then
begin
writeln('dobre');
body:=body+1;
kolikata:=kolikata+1;
clrscr;
end
else
begin
writeln('spatne');
kolikata:=kolikata+1;
clrscr;
end;
end;

until kolikata=(pocet_otazek)+1;

if kolikata<=(pocet_otazek)+1 then
begin
clrscr;
writeln('-----------------------');
writeln('I Ziskali jste ',body,' bodu I');
writeln('-----------------------');
readln;
end;

close(f);
close(fi);
readln;
clrscr;
end.

Napsal: stř 13. čer 2007, 12:38
od VasekB
write('Zvolte lekci(1-5):');
read(lekce);
clrscr;

case lekce of
1: soubor:='C:\pascal\pt\lekce\lek'+jaz+'_1.txt';
2: soubor:='C:\pascal\pt\lekce\lek'+jaz+'_2.txt';
3: soubor:='C:\pascal\pt\lekce\lek'+jaz+'_3.txt';
4: soubor:='C:\pascal\pt\lekce\lek'+jaz+'_4.txt';
5: soubor:='C:\pascal\pt\lekce\lek'+jaz+'_5.txt';
else
begin write('Opakujte prosim zadani, lekce neexistuje:'); read(lekce); end
end;


co nejak takhle>

vyber:=false
repeat
read(lekce);
if lekce>1 and lekce<5 then soubor:='C:\pascal\pt\lekce\lek'+jaz+'_'+lekce+'.txt'; vyber:=true;
else
write('Opakujte prosim zadani, lekce neexistuje:');
end;
until vyber;

Napsal: stř 13. čer 2007, 13:25
od Lukfi
Shorty píše:tak tady je muj vysledek snazeni... ma to jeste nejake mouchy,je to mozna neprehledne ale neni to snad nejhorsi
pomohlo by používat bb tag code... jako takhle:

Kód: Vybrat vše

program slovicka;
uses crt;
var f,fi:text;
    jaz,s,x,spravna,soubor,jaz_s,ukoncit:string;
    i,kolikata,body,pocet_radku,konec,pocatek,jak,lekce:integer;
    odpoved: char;
    otazka:array[1..5] of string;
    pocet_otazek: real;
- proč je počet otázek real? Desetinná čísla tam přece nepotřebuješ, ne?
- proč na jednoduché přepínání 2 stavů používáš string (jaz)?