Pascalban hogy kell megcsinálni azt, hogy kiírja a legkisebb és a legnagyobb számot, ha adott 4 szám?
Max- és minimumkeresés?
Ha eredetileg nem tömbben vannak a számok, akkor 4 szám miatt felesleges beírni őket tömbbe, csak hosszabb lesz a kód.
WriteLn (Min(a, Min(b, Min(c, d))));
WriteLn (Max(a, Max(b, Max(c, d))));
Vagy valami hasonló, én nem értek pascalhoz.
Azt hiszem nem a legelegánsabb megoldás úgyhogy várom a kritikákat :-)
program legnagyobb_szam;
uses crt;
var
szam:byte;
t:array[1..4] of byte;
i,j:byte;
begin
clrscr;
for i:=1 to 4 do
begin
write('kerem a ',i,'. szamot: ');
readln(szam);
t[i]:=szam;
end;
for i:=1 to 3 do
begin
for j:=i+1 to 4 do
begin
if t[i]>t[j] then szam:=t[i];
end;
end;
writeln('legnagyobb: ',szam);
readln;
end.
Ránézésre működhet, de nem kell ennyi összehasonlítás.
program legnagyobb_szam;
uses crt;
var
szam:byte;
t:array[1..4] of byte;
i,j:byte;
begin
clrscr;
for i:=1 to 4 do
begin
write('kerem a ',i,'. szamot: ');
readln(szam);
t[i]:=szam;
end;
szam:=t[1];
for i:=2 to 4 do
begin
if t[i]>szam then szam:=t[i];
end;
writeln('legnagyobb: ',szam);
readln;
end.
A lényeg:
Mondjuk ezek a számok: 4,2,8,5
Mondjuk, hogy a 4 a legnagyobb. Megyünk tovább; összehasonlítjuk a 2-vel. Ez kisebb, szóval nem érdekel. A 8 viszont nagyobb, szóval a 4 helyett a 8-at jegyezzük meg, mint legnagyobbat. Az 5 megint kisebb az eddigi legnagyobbnál (8), szóval az sem érdekel.
A végén kiírjuk a 8-at, amit utoljára megjegyeztünk legnagyobb számként.
A legkisebb ugyanígy, csak a relációjelet kell megfordítani. Ugyanazon cikluson belül működhet mindkettő, külön if-fel, külön tároló változókkal.
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!