[ peromalosutra @ 11.04.2005. 15:06 ] @
Pokusao sam uraditi jedan klasicni skolski zadatak (Razvrstati sto slucajno odabranih (ili zadanih) brojeva u rastucem redoslijedu), sinula mi je ideja, i nakon unosenja i ispravljanja svih sintaksnih greski- pogadjate... program i dalje ne radi.
Dakle kada ga pokrenem on mi 100 puta napise broj 99 (posto sam stavio da bira brojeve 1-100) umjesto da napise 1,2,3,5... zavisno od brojeva koje je odabrao.
Evo kako program izgleda, pa ako ima neko da voli lupati glavu nad jednostavnim zadacima koji uporno ne rade neka proba:

Program Paskal;
Uses Crt;
Var Niz : array [1..100] of integer;
nizrazvrstanih:array [1..100] of integer;
max,i,n,m:integer;

Begin

Randomize;

For i:=1 to 100 do {odabira 100 slucajnih brojeva i upisuje ih u niz}
begin
niz :=Random (100);
Writeln (Niz); {ispisuje neuredjeni niz}
end;

writeln ('Nasumicno odabiranje brojeva zavrseno.');
readln;
clrscr;

Max:=niz[1]; {proglasava prvi broj niza trenutno najvecim}

For m:=1 to 100 do {ponavlja sve petlje 100 puta, jer toliko br. treba razvrstati}
begin

For i:= 1 to 100 do
If Niz> Max then {trazi trenutno najveci broj u nizu}
max:=Niz; {max uzima vrijednost najveceg broja u nizu}


nizrazvrstanih[m]:=max; {pamti trenutni max u m-tu lokaciju niza razvrstanih}


For n:=1 to 100 do
if niz[n]=max then niz[n]:=0; {proglasava najveci broj niza nulom i omogucava trazenje sledeceg najveceg}
End;


writeln ('Razvrstavanje brojeva zavrseno.');
readln;
clrscr;

for i:=1 to 100 do
writeln ('Razvrstan[',i,']=',nizrazvrstanih); {ispisuje 100 brojeva po rastucem redoslijedu}
readln;
End.
[ neor @ 11.04.2005. 15:14 ] @
Trebas i max da vratis na nulu u svakom prolazu.
[ Toyo @ 11.04.2005. 15:27 ] @
Drugi put kad dajes kod stavi ga izmedju code i /code (pise ti na levoj strani kada pises poruku)


Code:

const
     brojeva = 100;
var
   n:array[1..brojeva] of integer;
   i,j,p:integer;
begin
     for i := 1 to brojeva do
         n[i]:= random(brojeva);
     for i := 1 to brojeva do
         for j :=  brojeva downto i+1 do
             if n[j]>n[j-1] then
                begin
                     p:=n[j];
                     n[j]:=n[j-1];
                     n[j-1]:=p;
                end;
     for i := 1 to brojeva do
         write(n[i]:10);
     readln;
end.
[ Bojan Kopanja @ 11.04.2005. 15:28 ] @
Za pocetak ispravi ovaj deo:
Code:
For i:=1 to 100 do {odabira 100 slucajnih brojeva i upisuje ih u niz}
begin
niz :=Random (100);
Writeln (Niz); {ispisuje neuredjeni niz}
end;
da izgleda ovako:
Code:
For i:=1 to 100 do {odabira 100 slucajnih brojeva i upisuje ih u niz}
begin
niz[i] :=Random (100);
Writeln (Niz[i]); {ispisuje neuredjeni niz}
end;


Znaci moras da svakom clanu dodas razlicitu vrednost a ne ovako kako si ti radio ( to objasnjava zasto ti je pisao sam broj 99 :D )...

E sad ka imas podatke u nizu pogledaj malo po google-u recimo bubble sort kao mozda najjednostavniji vid sortiranja i to bi ti trebalo biti to... Tvoj program ima da fercera k'o lud ;).

<**********dpouna**********>

ToYo i ja smo postovali u isto vreme... Eto, on ti je pokazao kako to treba, tj ispunio je nis kako treba i koristio je bas bubble sort za sortiranje brojeva u nizu, tako da prouci malo to sto je on napisao :D.
[ peromalosutra @ 11.04.2005. 18:23 ] @
Dobro, sad i ja vidim da ima dosta gresaka, ali nije mi jasno zasto kompajler nije prijavio gresku kad sam napiao niz:=random (100), kad varijabla "niz", u stvari i predstavlja niz i pored nje mora da se nadje indeks koji ce oznaciti na koji se clan niza odnosi neka naredba. Zar nije trebao da izbaci poruku tipa
'[' expected, but ':=' found, ili nesto slicno?
[ Toyo @ 11.04.2005. 18:36 ] @
Napisao si ti i zagrade i u njima i, nego se to u poruci shvata da sledeci tekst pises italikom pa se ono i u zagradama ne vidi.

Zato se programi na forumu stavljaju izmedju code tagova.