Valaki segitene kicsit hogy ez miert nem mukodik C-ben?
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;
}
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.
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;
}
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
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.
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
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!