Ho fatto cosi' vedo il risultato dopo oddity ma poichè quando richiamo azzera non fa altro che mettermi lo 0 nei primi dieci numeri dell'array e negli ultimi 10, mentre dovrebbe in realtà azzerare i valori dell'array inferiori alla media . Questo verosimilmente perchè fa riferimento al risultato di oddity per cui video tutti gli 1 (che sono inferiori alla media) e li sostituisce con gli 0 ovviamente.
In realtà i dovrei usare questo azzera sui risultati dell'array in kelvin....
Insomma io riempio l'array e lo vedo a video , a video poi mi vengono le temperature medie dei vari mesi, poi alla domanda "array in kelvin" scrivo ad esempio 1 e vedo la trasformazione a video in kelvin, passa quindi in automatico a oddity per cui mi vengono tutti i valori delle temperature in kelvin ma i primi 10 e gli ultimi 10 numeri sono sostituiti con 1 , poi con "azzera" mi sostituisce i primi e gli ultimi 10 numeri dell'array con 0 mentre dovrebbe farlo solo per i valori sotto la media...
In realtà i dovrei usare questo azzera sui risultati dell'array in kelvin....
Insomma io riempio l'array e lo vedo a video , a video poi mi vengono le temperature medie dei vari mesi, poi alla domanda "array in kelvin" scrivo ad esempio 1 e vedo la trasformazione a video in kelvin, passa quindi in automatico a oddity per cui mi vengono tutti i valori delle temperature in kelvin ma i primi 10 e gli ultimi 10 numeri sono sostituiti con 1 , poi con "azzera" mi sostituisce i primi e gli ultimi 10 numeri dell'array con 0 mentre dovrebbe farlo solo per i valori sotto la media...
Codice:
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <iostream>
using namespace std;
//dimensione ed array globali
const int dim=120;
double T[dim];
//prototipo della funzione
//temperature casuali [-10;40]
void fillUpArray();
void printArray();
double yearAveragedT();
double getMaxT();
double getMinT();
void averagedTperMonth();
void fillUpArray(){
for(int i=0; i<dim; i++)
T[i]=rand()%51-10;
}
void printArray(){
for(int i=0; i<dim; i++)
cout<<T[i]<<endl;
}
void averagedTperMonth(){
int cont=0; int offset=0;
while(cont<12)
{
double somma=0;
for(int i=0; i<10; i++)
{
somma=somma+T[i+offset];
}
cout<<somma/10.0<<endl;
offset=offset+10;
cont++;
}
}
/*restituisce la temperatura media del
mese passato come parametro
*/
double averagedT(int n)
{
double somma=0;
for(int i=0; i<10; i++)
somma=somma+T[i+((n-1)*10)];
return somma/10.0;
}
/*
converte le temperature modificando l'arra
richiamando */
void converToKelvin()
{
for (int i=0;i<dim;i++)
{
T[i]=T[i]+ 273,15;
}
}
bool isitKelvin()
{
if(T[0]>40)
{
return true;
}
}
//si dovrebbero azzerare i valori dell'array inferiori alla media ,
void azzera ()
{
double media=0;
for (int i=0; i<dim ; i++)
{
media=media+ T[i];
}
media =media/dim;
for (int i=0; i<dim ; i++)
{
if ( media > T[i])
T[i]=0 ;
}
}
//chiede l'inserimento di un numero intero e sostituisce i primi 10 e gli ultimi 10 posizioni nell'array con l'intero.
void oddity (int n)
{
for (int i=0; i<10; i++)
{
T[i]=n;
}
for (int i=dim-10;i<dim; i++)
{
T[i]=n;
}
}
int main()
{
srand(time(NULL));
int m;
int n;
fillUpArray();
printArray();
cout<<endl;
averagedTperMonth();
converToKelvin();
cout<<"array in Kelvin"<<endl;
cin >>n;
printArray();
cout<<endl;
oddity (n);
printArray();
cout<<endl;
azzera ();
printArray();
while(true)
{
cout<<"Seleziona il mese [1;12]: ";
cin>>m;
cout<<averagedT(m)<<endl;
}
return 0;
}
Ultima modifica: