Kezdőoldal » Számítástechnika » Programozás » Miért rossz a kiiratás ebben...

Miért rossz a kiiratás ebben a C programban? (lent)

Figyelt kérdés

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.



2019. okt. 26. 19:23
 1/7 anonim ***** válasza:
vót má
2019. okt. 26. 19:58
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:

"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?

2019. okt. 26. 20:01
Hasznos számodra ez a válasz?
 3/7 anonim ***** válasza:
100%

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)

2019. okt. 26. 20:23
Hasznos számodra ez a válasz?
 4/7 A kérdező kommentje:
Sikerült megoldanom úgy, hogy a tömb j-1-edik elemét iratom ki.
2019. okt. 26. 20:25
 5/7 A kérdező kommentje:
De köszi a segítséget.
2019. okt. 26. 20:26
 6/7 tabaki ***** válasza:

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;

}

2019. okt. 28. 18:15
Hasznos számodra ez a válasz?
 7/7 A kérdező kommentje:
Mert azt a tanácsot kaptam mástól, hogy a másodiknál ne i legyen a ciklusváltozó. Arra nem gondoltam, hogy while ciklussal is megcsinálható rövidebben, köszi.
2019. okt. 28. 20:33

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!