|
Titlul: Problema medie aritmetica Scris de: Constantin Dogaru din Februarie 20, 2013, 18:33:26 Bun. o problema banala care nu-mi afiseaza rezultatul dorit din motive necunoscute.
algoritmul este urmatorul: #include <iostream> using namespace std; int main() { int n,a[100],i,s=0; float ma=0; cin>>n; for(i=0;i<n;i++) cin>>a; for(i=0;i<n;i++) s=s+a; ma=s/n; cout<<ma; return 0; } Ideea e ca imi calculeaza media aritmetica ca si cand as fi declarat-o cu int,desi ea e cu float.Nu-mi calculeaza cu virgula si nu inteleg de ce.Stiu ca am mai facut problema asta de mai multe ori si a mers,am uitat eu ceva sau care e problema? Titlul: Răspuns: Problema medie aritmetica Scris de: Pirtoaca George Sebastian din Februarie 20, 2013, 18:41:17 Tu declari variabila s float, dar operatiile se executa pe int. Inlocuieste asta
Cod: ma=s/n; Cod: ma=(float)s/n; Titlul: Răspuns: Problema medie aritmetica Scris de: Constantin Dogaru din Februarie 20, 2013, 18:47:32 Mersi,dar la liceu am facut si asa si a mers si folosesc acelasi compilator.Pana acum nu mi-a facut nicio problema cel de acasa,e codeblocks-ul din pachetul oji.
Deci nu e corect cum am scris eu? Titlul: Răspuns: Problema medie aritmetica Scris de: Pirtoaca George Sebastian din Februarie 20, 2013, 18:48:09 Nu, nu e corect.
Asta se mai intampla si cand faci suma a doua numere , fiecare int, suma care depaseste int. Trebuie sa scrii: Cod: int a, b; Cod: s = (long long) a + b Titlul: Răspuns: Problema medie aritmetica Scris de: Constantin Dogaru din Februarie 20, 2013, 19:10:49 am descoperit care era greseala,de ce-mi mergea inainte si acum nu mai merge.
Trebuie si s-ul declarat tot cu float pentru ca o valoare de tip intreg pe alta valoare de tip intreg va da tot un intreg si nu asta-i rezultatul pe care il urmaresc. float ma=0,s=0; si totul e bine |