PDA

View Full Version : [c++]Non riesco ad eseguire questo programma


aleale93
29-12-2016, 17:56
Salve a tutti ragazzi, sono un ragazzo nuovo di qui, da poco mi sto inoltrando nella programmazione.
Di preciso nel c++, ho delle lezioni da fare online e mi sono imbattuto in questa:
"si implementi un programma in linguaggio c++, tale che determini gli indici statistici"
e sotto c'è il codice già scritto cosi:

#include <iostream>
#include <algorithm>

using namespace std;
//prototipi delle funzioni
double MediaAritmetica(int v[],int);
double MediaArmonica(int v[],int);
double Mediana(int v[],int);
double mediaPonderata(int v[],int);
int main()
{
double m1;
double m2;
double m3;
int dati[] = {10,21,49,70,32,51,58,21,24,27,30,33};
m1 = MediaAritmetica(dati,dim); //<----riga 16
cout<<"media aritmetica: " <<m1<<endl;
m2 = mediaPonderata(dati,dim);
cout<<" media armonica: "<<endl;
m3 = Mediana(dati,dim);
cout<<"mediana: "<<m3<<endl;

return 0;
}
double MediaAritmetica(int v[],int d)
{
double m;
double somma = 0;
for (int i=0;i<d;i++)
somma += 1/v[i];
m = d/somma;
return m;
}
double Mediana(int v[],int d)
{
double m;
int index;
sort(v, v+d);
index = d/2;
if (d%2==0)
{
m=(v[index-1]+v[index])/2.0;
}
else{m=v[index]} //<---riga 44
return m;
}


alla riga 16 mi dice "dim was not declared in this scope"
ed alla riga 44 dice "error: expected ';' before '}' token"

potreste getilmente aiutarmi?
grazie.

zeMMeMMez
29-12-2016, 18:09
Di preciso nel c++, ho delle lezioni da fare online e mi sono imbattuto in questa:
"si implementi un programma in linguaggio c++, tale che determini gli indici statistici"
m1 = MediaAritmetica(dati,dim); //<----riga 16

Di C++ non c'è nulla, è C praticamente "schietto".
per la domanda, da dove salta fuori dim?

aleale93
29-12-2016, 18:21
Di C++ non c'è nulla, è C praticamente "schietto".
per la domanda, da dove salta fuori dim?

grazie, per la risposta.
ho notato pure io che dim non era dichiarato ma la mia domanda era appunto come poter fare girare il programma, che cosa voleva significare quel dim?
e per il secondo problema? io sono davvero alle prime armi, se metto il ";" dove dice lui mi da comunque errore

sottovento
29-12-2016, 18:50
Di C++ non c'è nulla, è C praticamente "schietto".


a parte

#include <iostream>
#include <algorithm>



using namespace std;



cout<<"media aritmetica: " <<m1<<endl;



cout<<" media armonica: "<<endl;



cout<<"mediana: "<<m3<<endl;

sottovento
29-12-2016, 18:56
Quel dim e' il numero degli elementi del vettore da mediare.
Lo puoi mettere a 12 oppure, visto come hai dichiarato il vettore

int dim = sizeof(dati)/sizeof(int);

zeMMeMMez
29-12-2016, 19:11
Quel dim e' il numero degli elementi del vettore da mediare.
Lo puoi mettere a 12 oppure, visto come hai dichiarato il vettore

int dim = sizeof(dati)/sizeof(int);

Come approccio maieutico mi pare poco utile.

zeMMeMMez
29-12-2016, 19:15
else{m=v[index]} //<---riga 44
return m;
}


ed alla riga 44 dice "error: expected ';' before '}' token"


Cosa ti dice esattamente il compilatore?

aleale93
29-12-2016, 20:23
grazie alle vostre risposte ho risolto i due errori ma ora me n'è spuntato fuori un altro alla riga 19:
undefined reference to `mediaPonderata(int*, int)'
error: ld returned 1 exit status



m2 = mediaPonderata(dati,dim);
cout<<" media armonica: "<<endl;

tomminno
30-12-2016, 11:03
grazie alle vostre risposte ho risolto i due errori ma ora me n'è spuntato fuori un altro alla riga 19:
undefined reference to `mediaPonderata(int*, int)'
error: ld returned 1 exit status

Dov'è il codice di mediaPonderata? :D
Però non capisco, da quando in qua nel testo di un esercizio c'è anche il codice risolutivo? Non è che l'esercizio è proprio scrivere quella funzione?

aleale93
30-12-2016, 15:33
Dov'è il codice di mediaPonderata? :D
Però non capisco, da quando in qua nel testo di un esercizio c'è anche il codice risolutivo? Non è che l'esercizio è proprio scrivere quella funzione?

non è :
double mediaPonderata(int v[],int);


credo che questo esercizio sia troppo avanti per me, forse come hai detto tu l'esercizio è proprio quello di modificare l'errore o quello che manca