Kezdőoldal » Számítástechnika » Programozás » Csináltam C++-ban egy kezdő...

Csináltam C++-ban egy kezdő programot ami kiszámol egy osztály átlagát, de valami baj van (lent) Mi lehet a baj?

Figyelt kérdés

13fős osztály (iskolai osztály)


#include <iostream>


using namespace std;


int main()

{

int a[13],atlag=0,i=0;

while(i<13){

cout<<"Az "<<i+1<<". tanulo erdemjegye: "<<endl;

cin>>a[i];

i++;

}

atlag=atlag+a[i]/13;

;cout<<"Az osztaly atlaga: "<<atlag<<endl;

return 0;

}


Amikor futtatom, az átlagnak mindig 0-t ír


2017. szept. 27. 20:58
 1/7 anonim ***** válasza:
100%

Az atlagszamitast egyszer vegzed el, az utolso tanulora.


Ezen kivul az atlag is egesz szam a programodban.

Emiatt hiaba kap 5-ost az egyik tanulo, 5/13=0, 0-val no az atlag 0.38 helyett.

2017. szept. 27. 21:03
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:
100%

#1: Még ha az utolsó tanulóra végezné el, de nem, ki is címez a tömbből.


Kérdező: egyébként felesleges a tömb ebben az esetben, hisz csak az aktuális értéket kell felhasználnod a cikluson belül. Az egész osztás is gond, hogy írta #1.

2017. szept. 27. 21:57
Hasznos számodra ez a válasz?
 3/7 sharkxxx ***** válasza:
100%

#include <iostream>

using namespace std;

int main() {

const int LETSZAM = 13;

    int a[LETSZAM];

int i = 0;

    int total = 0;

    double atlag = 0;

    while(i < LETSZAM) {

        cout<<"Az "<<i+1<<". tanulo erdemjegye: ";

        cin>>a[i];

        total += a[i];

        i++;

    }

    atlag = double(total)/LETSZAM;

    cout<<"Az osztaly atlaga: "<<atlag<<endl;

    return 0;

}

2017. szept. 27. 22:10
Hasznos számodra ez a válasz?
 4/7 anonim ***** válasza:
100%

Nehany megjegyzes:

- Ha nem akarod kesobb visszanezni az egyes tanulok eredmenyeit, akkor folosleges tombbel szorakozni.

- Erdemes lenne kezelni azt, ha nem 1 es 5 kozotti szam a bemenet (vagy amilyen intervallumban mozognak az erdemjegyek). Mi fog egyaltalan tortenni akkor?

- Az osztalyletszamnak erdemes letrehozni egy valtozot, mivel tobb helyen elojon, aztan ha mondjuk egy masik osztalyban mar 20 tanulo van, akkor eleg lesz egy helyen atirni.

- Gyakolaskepp irhatnal egy fuggvenyt, ami mondjuk megkapja parameterkent, hogy hany tanulo van es visszaadja az atlagot.



#include <iostream>


using namespace std;


int main()

{

double atlag = 0; /* ez nem egesz szam!!! */

int osszeg = 0; /* ebben fog akkumulalodni a jegyek osszege */

int osztalyletszam = 13; /* erdemes beszelo nevet adni a valtozoknak, hogy ne keverd oket ossze, es erdemes angolul elnevezni oket a kesobbiekben */


/* maradhat a while ciklus is, csak igy jobban latszik, hogy mi micsoda */

for (int i = 1; i <= osztalyletszam; ++i) {

cout << "Az " << i << ". tanulo erdemjegye: " << endl;

int iedikErdemjegy; /* ha lehet kapni mondjuk 4.5 -os jegyet, akkor ez is legyen double */

cin >> iedikErdemjegy;

osszeg = osszeg + iedikErdemjegy;

}


atlag = (double)osszeg / osztalyletszam; /* ha ez a (double) nem lenne ott, akkor egesz szamot adna */

cout << "Az osztaly atlaga: " << atlag << endl;

system("pause");

return 0;

}

2017. szept. 27. 22:24
Hasznos számodra ez a válasz?
 5/7 anonim ***** válasza:

Ja meg ha van nem egesz erdemjegy, akkor az osszeg se legyen egesz.

Meg azt is megirhatned gyakorlaskent, hogy egy tombben levo szamok atlagat szamolja ki, ha mar tombozni akarsz.:D

2017. szept. 27. 22:42
Hasznos számodra ez a válasz?
 6/7 A kérdező kommentje:
Eléggé kezdő vagyok C++-ban de most épp a tömböt/ciklus fajtákat gyekorolom, de köszi szépen a válaszokat!
2017. szept. 28. 06:19
 7/7 anonim ***** válasza:

#include <iostream>


int main()

{

const int letszam = 13;

double atlag = 0;

for(int i = 0, jegy; i < letszam && std::cin >> jegy; ++i) {

atlag += 1.0/letszam * jegy;

}

std::cout << atlag << '\n';

}

2017. szept. 28. 15:35
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!