Kezdőoldal » Számítástechnika » Programozás » Mi a hiba a programban?

Am.^^ kérdése:

Mi a hiba a programban?

Figyelt kérdés

A feladat, hogy a vektorba beolvasott számok összegét számolja ki, de while ciklust kell használnom.


int X[100], n, i=0, s=0;

printf("Elemek szama: ");

scanf("%d", &n);

while(i<n)

{

printf("x[%d]= ", i);

scanf("%d", &X[i]);

i=i+1;

s=s+X[i];

}


printf("s=%d", s);



2016. okt. 18. 19:36
 1/5 anonim ***** válasza:
Miért, mi a hiba a programban?
2016. okt. 18. 20:20
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:
100%

1) Ezt a két sort felcserélted:

i=i+1;

s=s+X[i];


2) Mi van, ha a felhasználó 100-nál több számot akarna megadni?

3) Mi van, ha a felhasználó nem számot ad meg?

2016. okt. 18. 20:22
Hasznos számodra ez a válasz?
 3/5 A kérdező kommentje:
Hát, akkor a felhasználónak pechje van, mert a maximális elemek száma meg volt adva:D köszönöm szépen! Egyébként itt még nem tartok, nagyon kezdő szinten megy, és ilyen 'mi van, ha' kérdésekre nem is szívesen gondolok:-))
2016. okt. 18. 21:05
 4/5 anonim ***** válasza:
100%

Pro tip #1:

Így csinálhatsz tetszőleges méretű tömböt:

int* Tomb = (int*)malloc(sizeof(int) * ElemekSzáma); //A tömb elemeinek kezdőértéke nem megbízható

int* Tomb = (int*)calloc(ElemekSzáma, sizeof(int)); //A tömb elemeinek kezdőértéke 0


Mi van, ha nem sikerült létrehozni?

if (Tomb == NULL) {

//Nem sikerült létrehozni

}


Ha már így létrehoztad és már nem kell, törölnöd kell:

free(Tomb);


Pro tip #2:

A scanf egy függvény, tehát van neki eredménye. Ez az eredmény azt mondja meg, hogy hány adatot sikerült beolvasni:

int Num;

if (scanf("%d", &Num) == 0) {

//Valami miatt nem sikerült beolvasni az elvárt egy darab egész számot.

}

else {

//Sikerült beolvasni, és a beolvasott szám a Num változóban van

}

2016. okt. 18. 22:54
Hasznos számodra ez a válasz?
 5/5 anonim ***** válasza:
És egyébként az a picike bibi van, hogy először növeled az i változódat, és utána akarod az X[i]-t hozzáadni az összeghez. Csakhogy az az i már nem arra az elemre mutat, ahova az előbb beolvastál. Előbb növeld az összeget, aztán az i-t.
2016. okt. 19. 00:03
Hasznos számodra ez a válasz?

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!