NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Tomas Dk
Člen
Avatar
Tomas Dk:16.11.2017 18:50

Ahojte, pomohol by mi niekto s týmto príkladom ? potrebujem zostaviť program, ktorý náhodne vyberie 1000 čísel z intervalu (1,20). program následne má vypísať najčastejšie sa vyskytujúce číslo v poli a zároveň vypísať, koľkokrát sa toto číslo vygenerovalo. prvú časť programu mám, s druhou časťou si neviem poradiť.. bol by som veľmi vďačný, ak mi pomôžete :) vopred ďakujem.

tu je zatiaľ prvá časť, ktorú mám:

**program generovanie;
uses crt;
var i:integer; cisla:array[1­..1000] of integer;
begin
randomize;
for i:=1 to 1000 do
begin
cisla[i]:=ran­dom(20)+1;
writeln(i,'. ','vygenerovane cislo je: ',cisla[i]);
end;
readln();
end. **

 
Odpovědět
16.11.2017 18:50
Avatar
Odpovídá na Tomas Dk
Matúš Olejník:16.11.2017 21:51

Popis som písal do komentárov snáď pomôže :)

program generovanie;
uses crt;

var i:integer; cisla:array[1..1000] of integer;
var result:array[1..20] of integer;
var maxCount:integer;

begin
    randomize;

    //inicializacia
    for i:=1 to 20 do begin
        result[i] := 0;
    end;
    maxCount := 0;

    for i:=1 to 1000 do begin
        cisla[i] := random(20) + 1;
        writeln(i,'. ','vygenerovane cislo je: ',cisla[i]);

        //aby si nemusel v dalsom cykle prechadzat cele
        //pole "cisla" mozes uz rovno tu pouzit vygenerovane
        //hodnoty ako index do pola "result" a zvysis pocet
        //vyskytu daneho cisla
        result[cisla[i]] := result[cisla[i]] + 1; //alebo Inc(result[cisla[i]])

        //ak je pocet vyskytu nejakeho cisla > ako doposial najdene
        //maximum updatnes maxCount
        if (result[cisla[i]] > maxCount) then
            maxCount := maxCount + 1; //Inc(maxCount)
        end;

        //prejdeme polom "result" a cisla ktore maju maxCount-krat
        //vyskyt vypiseme
        writeln('Najcastejsie vyskytovane cisla su: ') ;
        for i := 1 to 20 do begin
            if(result[i] = maxCount) then
                write(i, ' ');
        end;
        writeln();
        writeln('Vygenerovali sa ', maxCount, ' krat');

        readln();
end.
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
16.11.2017 21:51
/* I am not sure why this works but it fixes the problem */
Avatar
Tomas Dk
Člen
Avatar
Tomas Dk:17.11.2017 14:14

presne takto som to potreboval, skúšal som to tak isto, ale k výsledku som sa nikdy nedopracoval.. ďakujem veľmi pekne za ochotu a za pomoc :)

 
Nahoru Odpovědět
17.11.2017 14:14
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.