Exit code 201 - jízdenky – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Exit code 201 - jízdenky – Pascal – Fórum – Programujte.comExit code 201 - jízdenky – Pascal – Fórum – Programujte.com

 

Lukáš
~ Anonymní uživatel
301 příspěvků
16. 6. 2014   #1
-
0
-

Ahoj, zkouším sestavit program na testování kombinací číselných kodu na jízdenkách, jenže mám asi někde blbě rozsah, hází mi to chybu 201, nevidíte to někdo? Děkuji za jakoukoli užitečnou nápovědu.

Program jizdenky;


uses crt;

var     Krabicka:array[1..100000] of integer;
        x1,x2,x3,x4,i,j,k,Pocet_v_poli,pocet:integer;
        xm:0..9000000;

{ VYNULOVANI KRABICKY }
begin
begin
for i:=1 to 1000 do
    Krabicka[i]:=0;
end;
{ VYGENEROVANI CISEL }

repeat

randomize;

x1:=random(9)+1;
//writeln('prvni cislo: ',x1);   //vypise prvni cislo

repeat
x2:=random(9)+1;
until x1 <> x2;

//writeln('druhe cislo: ',x2);   //vypise druhe cislo

repeat
x3:=random(9)+1;
until ((x1 <> x3) and (x2 <> x3));

//writeln('treti cislo: ',x3);   //vypise treti cislo

repeat
x4:=random(9)+1;
until ((x1 <> x3) and (x2 <> x3) and (x1 <> x4) and (x2 <> x4) and (x3 <> x4));

//writeln('ctvrte cislo: ',x4);   //vypise ctvrte cislo


// SERAZENI CISEL
begin
pocet:=pocet+1;
if ((x1<x2) and (x2<x3) and (x3<x4)) then
    begin
    xm:=1000*x1+100*x2+10*x3+x4;
    writeln('kombinace: ',xm)
    end
        else if ((x1<x3) and (x3<x2) and(x2<x4)) then
    begin
    xm:=1000*x1+100*x3+10*x2+x4;
    writeln('kombinace: ',xm)
    end
        else if ((x1<x4) and (x4<x2) and(x2<x3)) then
    begin
    xm:=1000*x1+100*x4+10*x2+x3;
    writeln('kombinace: ',xm)
    end
        else if ((x1<x4) and (x4<x3) and(x3<x2)) then
    begin
    xm:=1000*x1+100*x4+10*x3+x2;
    writeln('kombinace: ',xm)
    end
        else if ((x1<x2) and (x2<x4) and(x4<x3)) then
    begin
    xm:=1000*x1+100*x2+10*x4+x3;
    writeln('kombinace: ',xm)
    end
    else if ((x2<x1) and (x1<x3) and (x3<x4)) then
    begin
    xm:=1000*x2+100*x1+10*x3+x4;
    writeln('kombinace: ',xm)
    end
    else if ((x2<x3) and (x3<x1) and (x1<x4)) then
    begin
    xm:=1000*x2+100*x3+10*x1+x4;
    writeln('kombinace: ',xm)
    end
        else if ((x2<x4) and (x4<x1) and (x1<x3)) then
        begin
    xm:=1000*x2+100*x4+10*x1+x3;
    writeln('kombinace: ',xm)
    end
        else if ((x2<x4) and (x4<x3) and (x3<x1)) then
    begin
    xm:=1000*x2+100*x4+10*x3+x1;
    writeln('kombinace: ',xm)
    end
        else if ((x2<x1) and (x1<x4) and (x4<x3)) then
    begin
    xm:=1000*x2+100*x1+10*x4+x3;
    writeln('kombinace: ',xm)
    end
        else if ((x2<x3) and (x3<x4) and (x4<x1)) then
    begin
    xm:=1000*x2+100*x3+10*x4+x1;
    writeln('kombinace: ',xm)
    end
    else if ((x3<x1) and (x1<x2) and (x2<x4)) then
    begin
    xm:=1000*x3+100*x1+10*x2+x4;
    writeln('kombinace: ',xm)
    end
    else if ((x3<x4) and (x4<x1) and (x1<x2)) then
    begin
    xm:=1000*x3+100*x4+10*x1+x2;
    writeln('kombinace: ',xm)
    end
        else if ((x3<x4) and (x4<x2) and (x2<x1)) then
    begin
    xm:=1000*x3+100*x4+10*x2+x1;
    writeln('kombinace: ',xm)
    end
        else if ((x3<x1) and (x1<x4) and (x4<x2)) then
    begin
    xm:=1000*x3+100*x1+10*x4+x2;
    writeln('kombinace: ',xm)
    end
        else if ((x3<x2) and(x2<x4) and (x4<x1)) then
    begin
    xm:=1000*x3+100*x2+10*x4+x1;
    writeln('kombinace: ',xm)
    end
else

end;

// PRIRAZENI CISEL DO KRABICKY

begin

if Krabicka[xm]=0 then
        begin
    Krabicka[xm]:=1;
    Pocet_v_poli:=Pocet_v_poli+1;
        writeln('Zrovna mame ',Pocet_v_poli,' listku.');
        end;
end;


//until keypressed;
until Pocet_v_poli = 84;

readln;
writeln('Mame ',Pocet_v_poli,' listku.');
writeln('Pocet nakoupenych listku celkem: ',pocet);
readln;

end.

Nahlásit jako SPAM
IP: 62.204.237.–
peter
~ Anonymní uživatel
4014 příspěvků
16. 6. 2014   #2
-
0
-

A neslo by to treba napsat nejak takto:

procedure spocitej(a,b,c,d)
begin
    xm:=1000*a+100*b+10*c+d;
    writeln('kombinace: ',xm);
end;

else if ((x3<x1) and (x1<x2) and (x2<x4)) then spocitej(x3,x1,x2,x4)
else if ((x3<x4) and (x4<x1) and (x1<x2)) then spocitej(x3,x4,x1,x2) ...

Pripadne pouzit pole a pak cyklem promichat jednotliva cisla?
a nebo predem udelat pole s cisly a to pouzit pro ify
cykus (cisla)
 { n = cisla[i]; if ( cislo[n[0]]<cislo[n[1]] and cislo[n[2]]<cislo[n[3]] and cislo[n[4]]<cislo[n[5]]) then begin spocitej(n[6]); break; end;}
cisla = [
/*x3<x1) and (x1<x2) and (x2<x4)) then spocitej(x3,x1,x2,x4*/
[3,1, 1,2, 2,4, [3,1,2,4]]
]

Pozor, mam to napsane castejne javascriptove a symbolicky, ale to si snad umis prepsat.
Nejsem si jisty, jestli 100.000 dokaze adresovat jeste jako array, pascal (na zacatku).
A ty randomy se mi taky nezdaji, co to ma delat, jestli se to treba nezacykli? Co kdybys popsal ukol, co ten program ma vlastne delat? Nahodne vygenerovat 4 neopakujici se cisla neni takovy problem, aby na to musel byt pouzity trojity repeat, ne?

Nahlásit jako SPAM
IP: 2001:718:2601:258:f4b1:89...–
p3can
~ Anonymní uživatel
312 příspěvků
16. 6. 2014   #3
-
0
-

uprime ten kod je fakt masakr. ani nevim co ma delat.

proc je Krabicka array[1..100000] of integer; a o 3 radky podtim to prochazis cyklem od 1 do 1000

begin
for i:=1 to 1000 do
    Krabicka[i]:=0;
end;

a proc je tam ten begin a end ?

dalsi vec je ze pokud se pokousis o jakoukoli statistiku v jakemkoli jazyce nikdy nemuzes mit inicializaci generátoru nahodnych cisel v cyklu.

dalsi vec je ze misto x1,x2,x3,x4 se ma pouzit pole x a jakmile to vygenerujes tak na to na cca 5 radcich aplikujes radici algoritmus napr. select sort (nejjednoduzsi na implementaci a pochopeni).

Nahlásit jako SPAM
IP: 77.92.213.–
Mircosoft+1
Věrný člen
17. 6. 2014   #4
-
0
-

Koukni se do helpu a zjisti si maximální velikosti proměnných a číselných typů. TP by tohle nevzal v žádném případě, takže tipuji, že děláš ve FP nebo něčem podobném. Nevím, jestli tam je integer 16bitový nebo 32bitový; kdyžtak zkus longint.

Program vypadá jako že by měl podle nějakého systému vygenerovat hromadu náhodných čtyřciferných čísel s číslicemi od 1 do 9, ale ten systém nechápu, hodil by se aspoň slovní popis.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 185.26.182.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
peter
~ Anonymní uživatel
4014 příspěvků
17. 6. 2014   #5
-
0
-

Ten random asi funguje. Slo by to tez delat zmensovanim pole.

Jeste jsem si vsiml...

xm:0..9000000; - to nevim, co znamena, nestacilo by real nebo integer?

repeat ...
pocet:=pocet+1; ... - to mas definovane jako integer
if Krabicka[xm]=0 then
        begin
    Krabicka[xm]:=1;
    Pocet_v_poli:=Pocet_v_poli+1;
        writeln('Zrovna mame ',Pocet_v_poli,' listku.');
        end;
until Pocet_v_poli = 84;

for i:=1 to 1000 do - tady naplnujes 1000 hodnot
    Krabicka[i]:=0;
end; ...
xm:=1000*a+100*b+10*c+d; - pokud bude a>=1, tak do dostanes 1000+x a pokud x (ten soucet bcd) bude vetsi nez 0, tak se dostanes na index pole 1001, ktery ten cyklus (for i:=1 to 1000 do) uz neresi.

Nahlásit jako SPAM
IP: 2001:718:2601:258:95d8:a5...–
Lukáš
~ Anonymní uživatel
301 příspěvků
17. 6. 2014   #6
-
0
-

#4 Mircosoft
Program by měl vypisovat 4 čísla, které si štípneš na jízdence v MHD a sbírat jejich kombinace.

Je to psaný v Pascalu.

Děkuji zkusím to dnes ještě projet.

Nahlásit jako SPAM
IP: 62.204.237.–
Tomix0
Stálý člen
18. 6. 2014   #7
-
0
-

Tyhle čísla si snadno vygeneruješ.

4x for cyklus:
a = 1...6
b = a+1...7
c = b+1...8
d = c+1...9

složíš:
a*1000+b*100+c*10+d

a přihodíš do seznamu, je jich 126.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.217.–
peter
~ Anonymní uživatel
4014 příspěvků
18. 6. 2014   #8
-
0
-

To mam neco podobneho, ale resim to v js, s tim se lip pracuje.

http://peter-mlich.wz.cz/web/js/prx/JSloterie.htm
Nevim, zda to bude pochopitelne. Nahodne vygenerujes treba 1000 tiketu. Z nich pak spocitas, kolik z nich obsahuje tva zvolena cisla 1-10. Kdyz je random skutecne nahodny a cisel je 1000 a vic, tak je ta pravdepodobnost blizka matematickemu vypoctu. Vypocet pravdepodobnosti hrubou silou.
V tom programu mam obe moznosti, tabulku pravdepodobnosti si muzes porovnat. Fast slow je ted nastavene stejne, ale muzes si to v kodu zmenit na vic tiketu nez 1000. Ja to ladil na vic pocitacist a jeden byl sunka pomala a druhej zvladal 100.000 v realnem case par sekund :)

Nahlásit jako SPAM
IP: 2001:718:2601:258:1568:c1...–
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, 5 hostů

Podobná vlákna

Exited with exit code 201 — založil Petr

Exit?? — založil cp.Hook

Polynom - run-time error 201 — založil danny04

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ý