LOSOVANI – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

LOSOVANI – Pascal – Fórum – Programujte.comLOSOVANI – Pascal – Fórum – Programujte.com

 

Malirka
~ Anonymní uživatel
34 příspěvků
18. 4. 2009   #1
-
0
-

Aahojky.Mám udělat tady tento program,ale nevím jak ho udlat,tak bych potřebovala nějak poradit.Vím jen, že se to musí určitě udělat přes Random a Randomize.
Zadání:
Sestavte program, který ze vstupního souboru načte seznam žáků a poté náhodně vybere zadaný počet žáků ke zkoušení.
VSTUP: seznam žáků – soubor ZACI.TXT
počet žáků ke zkoušení
VÝSTUP: přehled vylosovaných žáků

Vstupní soubor mám...Je tam je seznam jmen.
Díky

Nahlásit jako SPAM
IP: 213.168.179.–
Mircosoft+1
Věrný člen
21. 4. 2009   #2
-
0
-

1) Nactes ze souboru jmena zaku. Asi nejjednodussi bude pouzit pole (array) a Readln v cyklu while not eof(soubor) a nezapomen si pamatovat, kolik jich je. U kazdeho jmena je potreba mit jeste promennou typu boolean, ve ktere si budes pamatovat, jestli uz jsi ho vybrala (na zacatku u vsech false). A zavolej Randomize.
2) Tolikrat, kolik zaku se ma vyzkouset, udelas tohle:
- Vyber nahodne cislo z intervalu 1..pocet zaku (Random s vhodnym cislem v zavorce).
- Pokud je zak s timto cislem uz vybrany (ma tu boolovskou promennou nastavenou na true), opakuj predchozi bod (kdyby nekdo omylem zadal vetsi pocet zaku ke zkouseni nez kolik jich je ve tride, tak by se to tady zaseklo v nekonecne smycce, takze nezapomen zadane hodnoty zkontrolovat a pripadne opravit).
- Nastav nalezenemu zakovi, ze uz je vybrany (true).
3) Vypis vybrane zaky (cyklus pro cele pole, vypises jmena tech, u kterych je true).

Staci takhle?

Nahlásit jako SPAM
IP: 130.119.248.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Malirka
~ Anonymní uživatel
34 příspěvků
21. 4. 2009   #3
-
0
-

To Mircosoft : Ahojky.Už jsem něco zplodila s pomocí kamaráda,ale nevím jestli je to ono.
Uses crt;

type pole =array[0..30] of string;

function Losuj(zaci: Pole; pocet: Integer):String;
begin
Losuj:= zaci[random(pocet)];
end;

var i: Byte;
S: Text;
zaci: pole;
pocetnaz: Integer;
vysledek: String;

begin
Assign(S,'C:\Pascal\zaci.txt');
Reset(S);
Randomize;
TextColor(Green);
Writeln('---- Program na zkouseni zaku ----');
TextColor(White);
Writeln;
Write('Zadej pocet zaku ke zkouseni (maximalne 30): ');
Readln(pocetnaz);
Writeln;
i:=0;
while not(eof(S)) do
begin
Readln(S,zaci[i]);
Inc(i);
end;
Close(S);
while not(pocetnaz = 0) do
begin
Writeln;
Vysledek:= Losuj(zaci,i);
Writeln(vysledek);
Pocetnaz:= pocetnaz - 1;
end;
Readkey;
end.

Nahlásit jako SPAM
IP: 213.168.179.–
Mircosoft+1
Věrný člen
22. 4. 2009   #4
-
0
-

Problem je v tom poslednim cyklu while not(pocetnaz = 0) do ... . Takhle vzdycky vyberes zaka, vypises ho na obrazovku, ale nezapamatujes si, ze uz si ho vybrala a priste ho muzes klidne vylosovat jeste jednou, coz nechces. Takze treba: var vybrani:array[0..30] of boolean. Na zacatku nastav na false. Funkci Losuj uprav: jednak aby vracela cislo zaka a ne jeho jmeno a jednak aby Random tahal z rozsahu pocet+1 a ne pocet (jinak by bral cisla 0..29 a ne 0..30). Kdyz vylosujes cislo zaka, zobraz jmeno (zaci[cislo]) a zapamatuj si, ze je vybrany (vybrani[cislo]:=true). Od volani Losuj po vypsani zaka to hod do cyklu repeat ... until not vybrani[cislo], aby se zabranilo vicenasobnemu vyberu jednoho zaka.

Potom si jeste pro jistotu uprav nacitani: krome podminky not eof pridej jeste or(i<=30), aby nedoslo k problemum, kdyby bylo v souboru vic radku nez jak mas velke to pole.

Nahlásit jako SPAM
IP: 130.119.248.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Malirka
~ Anonymní uživatel
34 příspěvků
22. 4. 2009   #5
-
0
-

To Mircosoft : OK.Díky za radu

Nahlásit jako SPAM
IP: 213.168.181.–
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, 10 hostů

Podobná vlákna

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ý