Olvassunk be egész számokat 0 végjelig egy maximum 100 elemű tömbbe (a tömböt 100 eleműre deklaráljuk, de csak az elejéből használjunk annyi elemet, amennyit a felhasználó a nulla végjelig beír). - Írjuk ki a számokat a beolvasás sorrendjében?
Ebben valaki tudna segíteni?
Egy repeat-untilba bekérem a számokat 0 végjelig, addig megvan. Utána a kiíratásban kérnék egy kis segítséget, mert nem tudom, hogyan kell csak azokat a számokat kiírni amelyeket bekértem a felhasználótol..
Free pascal.
> hogyan kell csak azokat a számokat kiírni amelyeket bekértem a felhasználótol..
ciklus i:=1..N-ig
.. kiír(tömb[i]);
ciklus vége
Ahol:
- N a bekért számok darabszáma
- tömb pedig az a tömb, amiben eltároltad a számokat
Két ötletem lenne:
1. Általános megoldás: Eltárolod hány darab számot írt be a felhasználó, és ennyi darab számot íratsz ki a tömbből.
2. Feladat specifikus megoldás: Beírod a nullát is a tömbbe, majd utána az első 0-ig írod ki a számokat.
int szamok[100];
int index = 0;
while (true)
{
int szam;
std::cin >> szam;
szamok[index++] = szam
if (szam == 0) break;
}
for (int i = 0; i < index; i++)
{
std::cout << szamok[i] << std::endl;
}
most pedig írd át Free pascal-ra :D
while (true)
{
...
if (szam == 0) break;
}
Ilyet ne. Ocsmány és veszélyes is.
Nem véletlenül tudjuk előre, hogy max 100 elem lehet.
Tessek ez a program tokeletesen mukodik, nezd meg a kodjat!
program feladat;
uses crt;
var a : array[1..100] of integer;
szam : integer;
i : byte;
begin
clrscr;
i:=0;
writeln('Szamok beolvasasa 0 vegjelig: ');
repeat
inc(i);
write('szam = ');
readln(a[i]);
until(a[i] = 0);
writeln('A szamok a beolvasas sorrendjeben: ');
for szam:=1 to i-1 do
write(a[szam],' ');
readln;
end.
> Ilyet ne. Ocsmány és veszélyes is.
Tudtam, hogy a while(true) ki fogja csapni a biztosítékot valamelyik script kiddie-nél. Erről esetleg hallottál már?
#define forever while(true)
És ezt nem én találtam ki.
A végtelen ciklus nem egy ocsmány dolog, bár valóban veszélyes. Régen csak így kellett eventloop-ot csinálni még Win alatt is.
> Nem véletlenül tudjuk előre, hogy max 100 elem lehet.
Ez viszont jogos, tényleg megállnatna 100-nál úgy több sem férne bele bufferbe.
Nem a végtelen ciklus a csúnya dolog, hanem a helytelen használata, ahogy te is próbáltad.
Tanulj kicsit alapokat, sok az elmaradás.
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!