Kezdőoldal » Számítástechnika » Programozás » Valaki segitene kicsit hogy...

Valaki segitene kicsit hogy ez miert nem mukodik C-ben?

Figyelt kérdés

ez a program vege.Van A[10] es B[10] tombom.A feladatom hogy A tomb-ben levo paros szamokat adjam ossze,de valahogy sehogy nem akar menni.Otlet?



///'A' és 'B' sorozat paros elemeinek osszege

int paros[10],osszeg;j=0;

for(i=0;i<10;i++) ///atmasoljuk a paros elemeket A-ból paros-ba

{

if (A[i] % 2 == 0) paros[i]=A[i];

}

for(i=0;i<10;i++)

{

osszeg=osszeg+paros[i];

}

printf("%d",osszeg);


system("pause");return 0;

}


2016. aug. 22. 20:11
 1/9 A kérdező kommentje:
rövidítve a bajom hogy keptelen vagyok kiválogatni a paros szamokat és azoknak az osszeget belerakni egy valtozoba.Lehet nem este kellett volna elkezdeni a beadandot
2016. aug. 22. 20:18
 2/9 anonim ***** válasza:

Az átmásolás lépés teljesen felesleges, ráadásul ez okozza az egyik hibádat is, ugyanis utána végigmész az egész tömbön, aminek 0-100%-a memóriaszemét.

A másik, hogy az osszeg változót sem inicializálod, így az is memóriaszemét.

Harmadrészt ez a kód le sem fordulhat, mert j-t deklarálsz, de i-t használsz.

2016. aug. 22. 20:24
Hasznos számodra ez a válasz?
 3/9 A kérdező kommentje:
ja,mert irogattam már mindent ossze vissza ,aztan csak utana masoltam be ugyhogy i-vel meg j-vel lehet kavarodas xd
2016. aug. 22. 20:29
 4/9 anonim ***** válasza:

Az elejét pótold ki, az általad leírt részt tudom csak javítani.



///'A' és 'B' sorozat paros elemeinek osszege

int osszeg=0;

int i;


for(i=0;i<10;i++){

if (A[i] % 2 == 0)

osszeg+=A[i];

}



printf("%d",osszeg);


system("pause");


return 0;

}

2016. aug. 22. 20:46
Hasznos számodra ez a válasz?
 5/9 A kérdező kommentje:

2# ugyanezt megcsinaltam,csak gugliztam par percet elotte hogy megtudjam hogy létezik += operátor xd


De amugy alapjában véve azt nem lehet megcsinálni amit akartam,hogy HA páratlan azt áttöltöm x-ből y-ba.Mert rengetegféleképpen probaltam,de az mindig földönkivüli eredmenyt adott

2016. aug. 22. 20:52
 6/9 A kérdező kommentje:
*Ha páros
2016. aug. 22. 20:52
 7/9 anonim ***** válasza:
De lehet.
2016. aug. 22. 21:09
Hasznos számodra ez a válasz?
 8/9 anonim ***** válasza:

Egyrészt nem kell += operátort használni az csak egy rövidítés, az alábbi kettő ugyan azt jelenti:

osszeg += A[i];

osszeg = osszeg + A[i];


Másrészt próbáld megérteni miért nem működik a átmásolós megoldás, és akkor érteni fogod hogy hogyan lehet úgy megoldani ahogy gondoltad.


A paros[10] tömböd elemei valahogy így néznek ki indulásnál:

{132424,1423,0,124,0,423,34545,0,534,0}

Az oka hogy nem írtál bele még semmit és ezért teljesen véletlenszerű hogy épp az mit tartalmaz. Ez hívják memóriaszemétnek. Ha azt akarod hogy ne tartalmazzon memóriaszemetet, az összes elemét felül kell írnod, különben összeadásnál rossz eredményt fogsz kapni.


Egyik megoldás lehet hogy ha páros akkor átmásolod az értéket, ha páratlan akkor 0-t írsz be, így az nem fog változtatni az összegen.

2016. aug. 22. 21:15
Hasznos számodra ez a válasz?
 9/9 A kérdező kommentje:

Ahamm akkor azért kaptam 105460415630156 meg -1560165186


értékeket.Gondoltam egyébként rá,csak utána meg az jutott eszembe,hogy azt nem tudom le 0-ázni mint mint egy egyszerű véltozót.De mostmár értem. Köszönöm

2016. aug. 22. 21:50

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!