Program na generování náhodného pojmu – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Program na generování náhodného pojmu – Pascal – Fórum – Programujte.comProgram na generování náhodného pojmu – Pascal – Fórum – Programujte.com

 

TomasP
~ Anonymní uživatel
24 příspěvků
8. 3. 2011   #1
-
0
-

Zdravím, potřebuji poradit jak to celý hodit do cyklu, aby to generovalo další a další pojmy a pak je tam ještě problém s tím, že mi to neustále generuje číslo 0, jde to nějak ošetřit?



Program NAHODNY;
type int1 = 1..1000;
retez = string[250];

var pojem : retez;
cislo : int1;
spravne,spatne,uspesnost : real;
pocet,pocet2,i,x,pp : integer;
f : text;
odpoved : string;

begin spravne :=0; spatne :=0;
writeln('Zadej kolik mas pripravenych pojmu : '); readln(pp);
writeln('Zadej kolik pojmu mam generovat: '); readln(pocet); pocet2:=pocet;
assign(f, 'c:\terminy.txt');
reset(f);

while pocet>0do begin /// cyklus se provádí, čísla odečítá, ale nevypisuje další pojmy...
x:=random(pp);
pocet:=pocet-1;
writeln(pocet);

while not eof(f) do
begin readln(f, cislo,pojem);
if cislo=x then begin writeln(x , pojem);
writeln('Mela jsi pojem spravne?');readln(odpoved);
if odpoved='ano' then spravne := spravne+1
else spatne:=spatne+1;
;end;
end;
end;
close(f);
Writeln('Pocet otazek: ',pocet2, ' z toho spravne ',spravne:4:0, ' spatne ',spatne:4:0);
uspesnost:=(spravne/pocet2)*100;
Writeln('Tvoje procentualni uspesnost je: ' ,uspesnost:4:2);
readln;
end.


a text:


0 Pojem 0
1 access control (řízení vstupu)
2 account (konto, účet)
3 akronymy
4 ActiveX
5 Adobe Acrobat
6 ADSL (Asymmetric Digital Subscriber Line)
7 Agent
8 alias
9 anchor
10 anonymous FTP

Děkuji za radu, popřípadě již úpravu kódu.

Nahlásit jako SPAM
IP: 90.179.27.–
Grungy0
Super člen
8. 3. 2011   #2
-
0
-

Na začiatok ti bude asi treba randomize, aby ti potom random dával rôzne hodnoty.

Nahlásit jako SPAM
IP: 158.193.84.–
Prvý náznak hlúposti, je pocit geniality.
JoDiK
~ Anonymní uživatel
987 příspěvků
8. 3. 2011   #3
-
0
-

To Grungy :

Za prvé, aby random dával pokaždý jiná náhodná čísla, musíš ho jednou na začátku programu inicializovat příkazem randomize;

Za druhé, pokud jednou dočteš soubor až do konce, od toho okamžiku je EOF pořád pravda, musel bys soubor znovu otevřít, aby se četlo zase od začátku.

Doporučuji načíst údaje ze souboru do paměti (nejlépe do pole) a pak už procházet to pole...

Nahlásit jako SPAM
IP: 88.103.233.–
JoDiK
~ Anonymní uživatel
987 příspěvků
8. 3. 2011   #4
-
0
-

To TomasP :
Jo a s tou nulou jsem to asi hned nepochopil, random(n) vrací hodnoty v rozsahu 0 až n-1, pokud to chceš mít v rozsahu 1 až n, tak k tomu přičti jedničku...

Nahlásit jako SPAM
IP: 88.103.233.–
TomasP
~ Anonymní uživatel
24 příspěvků
8. 3. 2011   #5
-
0
-

Jak mám na začátku ten RANDOM inicializovat, stačí pouze někam dopsat randomize;?
Mohu poprosit o ten kód jak to uložiy do POLE? Nenapadá mě jak to napsat...

Nahlásit jako SPAM
IP: 90.179.27.–
JoDiK
~ Anonymní uživatel
987 příspěvků
8. 3. 2011   #6
-
0
-

To TomasP :
Ano stačí na začátek programu napsat randomize;
Pokud s polem neumíš, tak to asi nepůjde dvěma větama vysvětlit...
Zkus se nejdřív kouknout na Strukturované typy - pole třeba tady: http://www.spsemoh.cz/vyuka/pascal/index.htm
Pak můžeš plynule pokračovat na kapitolu soubory...

Nahlásit jako SPAM
IP: 88.103.233.–
TomasP
~ Anonymní uživatel
24 příspěvků
9. 3. 2011   #7
-
0
-

S maticema něco málo umím, ale neustále to hází chyby...

Program NAHODNY;

type int1 = 1..260;
retez = string[250];
pojmy = array [int1] of retez;
cisla = array [int1] of integer;
var pojem : retez;
cislo,i,c,p : int1;
spravne,spatne,uspesnost : real;
pocet,pocet2,x,pp : integer;
f : text;
odpoved : string;

begin
spravne :=0; spatne :=0;
writeln('Zadej kolik mas pripravenych pojmu : '); readln(pp);
writeln('Zadej kolik pojmu mam generovat: '); readln(pocet); pocet2:=pocet;
assign(f, 'c:\terminy.txt');
reset(f);



i:=1;
while not eof(f) do
begin readln(f, cislo,pojem);
cisla[i]:=cislo; pojmy[i]:=pojem; i:=i+1;

end;

repeat
randomize;
cislo:=random(pp);
writeln('Pojem ' ,cislo, ' ' ,pojmy[cislo]);
writeln('Mela jsi pojem spravne?');readln(odpoved);
if odpoved='ano' then spravne := spravne+1
else spatne:=spatne+1;


pocet:=pocet-1;
until pocet=0;

close(f);
Writeln('Pocet otazek: ',pocet2, ' z toho spravne ',spravne:4:0, ' spatne ',spatne:4:0);
uspesnost:=(spravne/pocet2)*100;
Writeln('Tvoje procentualni uspesnost je: ' ,uspesnost:4:2);
readln;
end.


Děkuji za rady a trpělivost :)

Nahlásit jako SPAM
IP: 90.179.27.–
TomasP
~ Anonymní uživatel
24 příspěvků
9. 3. 2011   #8
-
0
-

Tak mě napadlo ještě jedno uplně jednoduchý řešení, jak psal JODIK otevírám a zavírám soubor...
Kód jsem uploadoval jinam, ať to tu je trošku přehledné...

http://www.copypastecode.com/65717/

Hlavní dotaz, jak ošetřit to, aby RANDOM negeneroval vícekrát stejné čísla?
A mohu i tak poprosit o úpravu toho prvního kódu, abych se poučil ze svých chyb...
Děkuji :)

Nahlásit jako SPAM
IP: 90.179.27.–
JoDiK
~ Anonymní uživatel
987 příspěvků
9. 3. 2011   #9
-
0
-

To TomasP :
Randomize opravdu stačí jen jednou, nemusíš ho volat pokaždé, když potřebuješ náhodné číslo, takže ho dej hned za begin.
Matice sem nepleť a když ani nenapíšeš, jaký "chyby" ti to hází, tak co ti mám poradit? To jako mám za tebe odladit ten program?
Už jednou jsem ti psal, že random vrací hodnoty od nuly, takže když to zrovna hodí nulu, index pole bude mimo rozsah.

Nahlásit jako SPAM
IP: 88.103.233.–
JoDiK
~ Anonymní uživatel
987 příspěvků
9. 3. 2011   #10
-
0
-

To TomasP :

Hlavní dotaz, jak ošetřit to, aby RANDOM negeneroval vícekrát stejné čísla?


random přece z principu nemůže hlídat, aby se ty jeho čísla neopakovala... To jako kdybys chtěl po kostce, aby jednou hozené číslo už víckrát nedala...
To si musíš ošetřit sám...

Nahlásit jako SPAM
IP: 88.103.233.–
TomasP
~ Anonymní uživatel
24 příspěvků
9. 3. 2011   #11
-
0
-

Tak jsem to s tou maticí ošetřil, poslední dotaz, jde nějak program zkompilovat, aby šlapal pod Windows7_x64? Díky

Nahlásit jako SPAM
IP: 90.179.27.–
JoDiK
~ Anonymní uživatel
987 příspěvků
9. 3. 2011   #12
-
0
-

a on pod tím W7x64 nefunguje?

Nahlásit jako SPAM
IP: 88.103.233.–
TomasP
~ Anonymní uživatel
24 příspěvků
9. 3. 2011   #13
-
0
-

JoDiK napsal:
a on pod tím W7x64 nefunguje?


Nene, program jsem dělal pod Win XP s Turbo pascal 7.0 a pak jsem EXE soubor zkopíroval na jiný PC s Windows 7 64bit a tam nešlape...

Nahlásit jako SPAM
IP: 90.179.27.–
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
10. 3. 2011   #14
-
0
-

To TomasP :
A napsalo to nějakou chybu? Zksil to spustit v režimu kompatibility?
Zkus to přeložit v Borland Pascalu pod Windows, nebo v nějakém free pascalu. Hledej na internetu...

Nahlásit jako SPAM
IP: 88.103.236.–
TomasP
~ Anonymní uživatel
24 příspěvků
10. 3. 2011   #15
-
0
-

Tak ve Free Pascalu to zkompiluje vše OK, ale při spuštěn a zadání hodnot se prostě ukončí. Ten co je zkompilovaný pod Wind XP píše že verze souboru není kompatibilní se spuštěnou verzí OS... Ani režim kompatibility s Win XP, Win 95... nepomáhá...

Nahlásit jako SPAM
IP: 90.179.27.–
TomasP
~ Anonymní uživatel
24 příspěvků
10. 3. 2011   #16
-
0
-

Zdrojovy kond, zkompilovana verze pod Win XP a "data" jsou zde: http://leteckaposta.cz/103828573

Nahlásit jako SPAM
IP: 90.179.27.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 14 hostů

Podobná vlákna

Generace náhodného čísla — založil martasns

Generator nahodneho textu — založil Michalek

Vybrání náhodného souboru — založil BlackHole

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý