Miért rossz a kiiratás ebben a C programban? (lent)
Készítenem kell egy programot, ami egész számokat kér be egy tömbbe, legfeljebb 21 darabot.
A számok bekérésének le kell állnia, ha elérte a maximális mennyiséget, vagy a következő végjel értékét: -106
A bekérés után a programnak meg kell jelenítenie a tömbben eltárolt elemek számát, majd alá egy sorba a tömb elemeit fordított sorrendben.
Itt a kód, amit megírtam: [link]
Meg is csinálja majdnem teljesen azt, amit kell. Igazából szerintem csak minimális módosítás kell rajta. A tömb elemeit kiírja fordított sorrendben, de úgy, hogy az elsőhöz berak egy random számot és a többit eggyel arrébb csúsztatja, így az utolsó kimarad. Tehát azt kéne megoldani, hogy ne rakja be a random számot. Talán a j>0-val lehet a baj. Módosítgattam, de nem segített.
"Módosítgattam, de nem segített."
Oszt mi lenne, ha végre nem véletlenszerűen módosítgatnád, hanem megpróbálnád megérteni, debuggolni, kijavítani.
Fájna?
1. A kiírásnál az iterálást - ha nem akarod kiírni a végjelet (vagy 21 elemnél a tömb 21. helyen levő memóriaszemetet) - kezdd i-1-ről (j = i-1;).
2. Ha ki akarod íratni az első elemet is, a kiírásnál az iterálást végezd inkluzívan a 0. elemig (j >= 0;).
(Megjegyzés: a main függvénynél és a feltételnél duplikálva vannak a blokk illetve a feltétel kezdetét és végét jelző jelek)
Pompás megoldás, de minek az a j egyáltalán?
#include <stdio.h>
int main() {
int i, tomb[21];
for (i = 0; i < 21; i++) {
scanf("%d", &tomb[i]);
if (tomb[i] == -106) break;
}
printf("%d\n", i);
while (i > 0) {
i--;
printf("%d ", tomb[i]);
}
return 0;
}
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!