Questo è tutto il codice
int leggi_file(double data[], int max)
{
int num = 0;
ifstream f("daily data.txt");
while(num < max)
{
f >> data[num];
if(f.eof())
break;
num++;
}
return num;
}
int main()
{
int n=10, Ac=2;
float Ul=8.0, F_first=0.841;
float m=0.03, Ti=40, cp=4186;
int i, j;
float F_sec, F_r, Q_tot;
float m_adim, A;
double Ta[15], It[15], S[15], dati[50];
double loss_ave[15], qu[15], eta[15];
m_adim=((m*cp)/(Ac*Ul*F_first));
A=-1/m_adim;
F_sec=(m_adim*(1-exp(A)));
F_r=(F_sec*F_first);
printf("Fr=:%f\n",F_r);
int num = leggi_file(dati,50);
cout << "Dati letti: " << num << endl;
for(i = 0; i <= num; i=i+3)
{
Ta[i]=dati[i];
It[i]=dati[i+1];
S[i]=dati[i+2];
//stampa a video per verifica immisione dati
cout << "Ta:"<<Ta[i] << endl;
loss_ave[i]=Ul*(Ti-Ta[i])*3600/(1000000);
cout << "loss_ave:"<<loss_ave[i] << endl;
// cout << "It:"<<It[i] << endl;
cout << "S:"<<S[i] << endl;
if (S[i]<loss_ave[i]) qu[i]=0;
else qu[i]=F_r*(S[i]-loss_ave[i]);
cout<<"qu="<<qu[i]<<endl;
}
// for (i=)
system("PAUSE");
return EXIT_SUCCESS;
}
In pratica mi legge dei valori da un file fatto nel seguente modo:
Ta It S
-11 0.02 0.01
-8 0.43 0.35
-2 0.99 0.82
2 3.92 3.29
3 3.36 2.84
6 4.01 3.39
7 3.84 3.21
8 1.96 1.63
9 1.21 0.99
7 0.05 0.04
e me li salva nei rispettivi vettori. Il primo risultato sbagliato, a cui susseguono gli altri errori, è per Ta=8 poichè dai calcoli svolti a mano loss_ave=8*(40-8)*3600/1000000=0.92 mentre la stampa a video mi da come valore -0.259. Per i valori precedenti i calcoli fatti a mano coincidono con quelli ricavati con il codice. Grazie