Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Problema medie aritmetica  (Citit de 2019 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
energymonsta
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« : 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?
Memorat
SebiSebi
Nu mai tace
*****

Karma: 76
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #1 : Februarie 20, 2013, 18:41:17 »

Tu declari variabila s float, dar operatiile se executa pe int. Inlocuieste asta
Cod:
ma=s/n;
cu
Cod:
ma=(float)s/n;
si o sa mearga. Succes!  Ok
Memorat
energymonsta
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #2 : 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?
Memorat
SebiSebi
Nu mai tace
*****

Karma: 76
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #3 : 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;
long long s;
s = 0LL + a + b
sau
Cod:
s = (long long) a + b
Ideea e ca compilatorul executa operatiile pe int, nu conteaza tipul variabilei.
Memorat
energymonsta
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #4 : 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
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines