Kezdőoldal » Számítástechnika » Programozás » Kezdő programozó vagyok,...

Jhanee kérdése:

Kezdő programozó vagyok, gyakorlásnál ennél a feladatnal megakadtam: Egy egész típusú 100 db elemet tartalmazó tömböt páratlan számokkal 100-tól növekvő értékekkel. Feladat: Összeadni a páros indexen lévő elemek értékét. Hogyan kell ezt megcsinálni?

Figyelt kérdés

eddig jutottam el: (feltölti a tömböt a 100-tól felfelé)

int main()

{


int t[100],i=0,szam=101,osszeg=0;

while(szam>100)

{


if((szam%2)==1)

{

t[i]=szam;



i++;



}

szam++;

}

return 0;

}



2014. márc. 17. 14:01
 1/9 anonim ***** válasza:

A fenti kód majdnem jó, én ezt gondolnám át: while(szam>100)

Mivel a szam-ot 101-el inicializálod és folyamatosan növeled, ez gyakorlatilag egy végtelen ciklus. A megállási feltételnek annak kéne lennie, hogy amíg az index (i) nem lépi túl a tömb (t) határait.


Az összegzést pedig csinálhatod új ciklusban is és ebben is. A lényeg, hogy ott az index paritását kell vizsgálnod. Ha páros, akkor hozzáadod a számot az összeghez. Ennyi. :)

2014. márc. 17. 15:03
Hasznos számodra ez a válasz?
 2/9 iostream ***** válasza:

Miért 101-től indítod a szam változót? Mi a logikád ezzel? Miért nem gondolod ezt tovább?

A konkrét hibák pedig: miből gondolod, hogy a szam változó valaha is kisebb lesz, mint 100, ha sehol nem vonsz ki belőle, és alapból nagyobb? A while angol szó annyit jelent, hogy ameddig. Ameddig szam nagyobb, mint 100, ez mindig igaz lesz, tehát. Mikor is akarsz megállni? Ha tele van a tömb. Hány elemű a tömb, és mivel jelölöd, hogy hol tartasz benne?

2014. márc. 17. 15:03
Hasznos számodra ez a válasz?
 3/9 anonim ***** válasza:

én így csinálnám


t: 100 elemű tömb

szam: amit beszúrok alapérték 101 (100 nál nagyobb legkisebb páratlan)

szum_paros: páratlan számok összege


for i=0 i<100 i++

{

t[i]=szam

if i mod 2 = 0

{

szum_paros=szum_paros+szam

}

szam=szam+2

}

2014. márc. 17. 15:13
Hasznos számodra ez a válasz?
 4/9 anonim ***** válasza:

Fentebb csupa jót írtak.

Egy lehetőség:


int main() {

int t[100],i,x;


for (i=0,x=101; i<100; i++,x+=2) t[i]=x;

x=0;

for (int i=0; i<100; i+=2) x+=t[i];


return x;

}

2014. márc. 18. 09:44
Hasznos számodra ez a válasz?
 5/9 A kérdező kommentje:

Én így oldottam meg végül: ( amit nem írtam le még volt annyi a feladat hogy ki kellett számolni a páratlan indexen lévő elemek átlagát)


int main()

{


int t[100],i=0,szam=101,szum_paros=0,szum_paratlan=0,atlag=0;

while(i<100)

{

t[i]=szam;

if((i%2)==0)

{


szum_paros=szum_paros+szam;


}

if((i%2)==1)

{


szum_paratlan=szum_paratlan+szam;

atlag=szum_paratlan/50;

}

i++;

szam=szam+2;

}

printf("%d\n%d\n%d",szum_paros,szum_paratlan,atlag);

return 0;

}

2014. márc. 18. 14:20
 6/9 anonim ***** válasza:

egy FATÁLIS hiba, ha jól látom: (while (szam>100))végtelen ciklus, mert a szam=101 és ehhez csak mindig adsz, így soha nem lesz vége a ciklusnak

itt gondolom while(i>100), de ekkor deklarálni kell előtte az i-t int i = 0;


2. hiba: csak páratlan számokat lehet beszúrni, tehát nem szám++, hanem szam=szam+2;


3. észrevétel: néhol lehet "optimalizálni"

pl:

if((i%2)==0)

{


szum_paros=szum_paros+szam;


}

if((i%2)==1) //ehelyett lehet else ág, hiszen egy szám ha nem páros, akkor csak páratlan lehet (1 feltétel vizsgálattal kevesebb)

{


szum_paratlan=szum_paratlan+szam;

atlag=szum_paratlan/50;

}

2014. márc. 18. 15:07
Hasznos számodra ez a válasz?
 7/9 anonim ***** válasza:

előző vagyok


Bocsi elnéztem! jó a megoldásod, így csak a 3. pontomat olvasd el :)

2014. márc. 18. 15:08
Hasznos számodra ez a válasz?
 8/9 anonim ***** válasza:

Az átlagot is elég a printf() előtt kiszámolni, felesleges minden egyes új elemnél.

A +=, -=, stb. operátorokat meg szokd meg, mert praktikusabb, mint duplán leíni a változó neveket. :)

[a = a + b] -> [a += b]


int main() {


int t[100], i=0, szam=101, szum_paros=0, szum_paratlan=0, atlag=0;

while(i<100) {


t[i]=szam;

if(i&1) szum_paratlan += szam;

else szum_paros += szam;

i++;

szam += 2;


}

atlag = szum_paratlan/50;

printf("%d\n%d\n%d",szum_paros,szum_paratlan,atlag);

return 0;

}

2014. márc. 18. 15:56
Hasznos számodra ez a válasz?
 9/9 iostream ***** válasza:
Nem csak, hogy praktikusabb, de hatékonysági okokból is érdemesebb rászokni. Ha az nem egy változó, hanem egy összetett kifejezés, mint például egy mapbeli indexelés, akkor már érezhető a dupla keresés a szimplával szemben.
2014. márc. 19. 00:24
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!