» »

[Turbo pascal] Max Min tezave

[Turbo pascal] Max Min tezave

roba87 ::

Spravil sem se sprogramirat program ki prebere naključnih 100 števil in izpiše maximalno in minimalno cifro.

Primer:

program vaja;
uses crt;
var i,max,min,a:integer;
begin
randomize;
min:=100;
for i:=1 to 100 do
begin
a:=random(100)+1;
if a > max then
max:=a;
if a < min then
min:=a;
end;
writeln;
writeln('min je ' , min);
writeln('max je ' , max);
readln;
end.

Torej za maximalno število mi izpiše 100 za minimalno pa 1. Kje je problem da mi ne izpiše pravilno?
  • spremenilo: snow ()

Tutankhamun ::

A ti random vrne kdaj nič?
AMD Phenom QUAD 9950 Black Edition, 8GB

matejv ::

na hitro pogledano je vse pravilno. ti 100× izpišeš random cifro med 1 in 100. Zgleda da se vedno pojaviti tudi ti dve števili. Poskusiti spremeniti random(100) v random(1000) in poglej kaj se bo zgodilo. naj pa povem, da se ne spoznam na pascal.

AndrejS ::

Pred zanko še max postavi na -32000 in min na 32000 pa boš videl bolje če dela

Gundolf ::

Jah max nimaš nastavljen na začetku.

Obstaja tudi zelo dober način initializacije min in max spremenljivk, kadar veš da iščeš po seznamu z vsaj enim elementom. Obe vrednosti namreč nastaviš kar na vrednost prvega elementa in greš potem v zanki le še od drugega elementa dalje - huda optimizacija ;) Če pa damo šalo na stran - berljivost algoritma se poveča.

luli ::

briši randomize;

roba87 ::

Saj dela zaj. Sem nastavil da izbira cifre med 1 in 32000 tako da je zaj vredu. Hvala.
poprava:
max:=0;
min:=32000;
a:=random(32000)+1;

ostalo sem pustil nespremenjeno.


edit: kolega mi ga je popravil takole :

program vaja;
uses crt;
var i,max,min,a:integer;
begin
randomize;
i:=1;
min:=100;
for i:=1 to 100 do
begin
a:=random(50)+1;
if (i=25) or (i=25) or (i=25) or (i=25) then // zakaj je ta if stavek nimam pojma.
writeln(a,'')
else
write(a,'');
if a > max then
max:=a;
if a < min then
min:=a;
end;
writeln;
writeln('min je ' , min);
writeln('max je ' , max);
readln;
end.

Zgodovina sprememb…

  • spremenil: roba87 ()

mjakop ::

Vrži tole ven:
if (i=25) or (i=25) or (i=25) or (i=25) then // zakaj je ta if stavek nimam pojma.
writeln(a,'')
else
write(a,'');

Po temle pa tudi ni potrebe, saj se i določi v zanki: i:=1;


luli: Fora randomize je ravno v tem, da neko vrednost nastavi Randseed na podlagi katerega se generirajo naključna števila(da mu vrednost milisekund..vsaj v delphiju je tko). Če tega ne uporabiš ti števila meče ven vedno v istem zaporedju(mislim po novem zagonu programa).

luli ::

Poznam : Vendar se mi je včasih dogajalo, da če sem imel randomize in sem izbral polje naključnih števil, je to polje bilo vedno enako. Zakaj? Po resnici ne vem. Nekaj sem v zvezi s tem čital po takratnih swagih in prišel do spoznanja, da nisem edini s tem problemom. Kasneje sem uporabljal za random druge unite!


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Java[naloga]

Oddelek: Šola
18821 (628) Bizkit45
»

Algoritmi - diagrami poteka

Oddelek: Šola
222030 (1731) lebdim
»

Šah [Pacsal]

Oddelek: Programiranje
152135 (1738) NeOman
»

[Turbo Pascal] Pomoč...

Oddelek: Programiranje
131387 (1289) Grey
»

Pomoč pri Turbo Pascalu. Nujno!

Oddelek: Programiranje
171093 (826) Gundolf

Več podobnih tem