Most kezdtem neki Pascal programozásnak, de már az elején elakadtam egy feladatnál.50 számot kell generálni 80 és 1000 között véletlen sorrendbe és ki kell íratni a 100-nál kisebbeket. Mi a hiba?
program szamozas;
uses crt;
var i,szam,min:word;
BEGIN
Clrscr;
randomize;
min:=100;
writeln('Sz mok 80-t˘l 1000-ig');
writeln;
for szam:=1 to 50 Do begin
i:=random(920)+80;
write(i,', ');
while i<min do begin
min:=i;
end;
end;
writeln;
writeln;
write('Sz mok 100 alatt: ',min,', ');
readln;
END.
én így csináltam. Számokat generál 50 és 1000 között. A 100-nál kisebbeket is kiírja, de csak 1-et.(miközben néha több is van).
Miért szam valtozót használod ciklus változónak? I-t szokták amit te másra használsz, ettől még lehetne jól működő ha akár hogy is nevezed el a változókat.
Mit csinál a program?
min:=100;
for szam:=1 to 50 Do begin
i:=random(920)+80; i-be eltárol egy véletlen számot, következő iterációba elveszlik i előző értéke
write(i,', '); kiírja
while i<min do begin
min:=i;
end;
Ez while ugyan azt csinálja mintha:
if i<min then
min:=i;
lenne írva. Vagyis egyfajta speciális minimum kiválasztás.
Összefoglalva a program generálja a véletlen számokat, amiket "elfelejt" a program, de kiírja, a végén kiírja a legkisebb elemet ha az kisebb mint 100 különben 100-at ír ki függetlenül hogy volt e a 100 a generált számok között.
Elég lenne csak akkor kiírni számot ha 100-nál kisebb, nem látom a feladatkiírásba hogy előbb az összes számot írjuk ki.
"én így csináltam. Számokat generál 50 és 1000 között."
Eddig 80 és 1000 közötti számokról volt szó.
"A 100-nál kisebbeket is kiírja, de csak 1-et.(miközben néha több is van)."
Néha nincs 1 sem.
Először is, bocsi elírtam, 80 és 1000 között kell. És igen először ezeket írja ki.
Akkor rosszul közelítettem meg a dolgot. Mert nekem nem a legkisebb kell 100 alatt hanem csak a 100 alatti számok. Tudnál segíteni arra mi a megoldás?
random(920)+80 Úgy generál hogy 80-at generálhat 1000-et nem.Ha ez kell akkor:
Ha i-be tárolod a számot, eléggé zavaró, de működó megoldás.
writeln('50 db 80 és 1000 kozotti szamok generalasa, ezek kozul 100-nal kisebb:');
i:=random(920)+80;
if i<100 then
write(i);
Így elég csak akkor kiírni ha 100-nál kisebb.Különben ha ki akarod iratni először az összes számot akkor egy tömbbe el kell tárolni a számokat.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!