RISOLTO Aiuto per completamento esercizio

Stato
Discussione chiusa ad ulteriori risposte.

MPG

Utente Attivo
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...

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:

MPG

Utente Attivo
In riferimento al post #16 ancora una volta chiedo cosa sbaglio..
Ho una verifica lunedi' e chiedevo gentilmente il vostro aiuto, saro' duro ma non capisco....
 

rodhellas

Utente Attivo
1,470
395
Hardware Utente
CPU
Intel i5 3470
Scheda Madre
AsRock H77 pro4/mvp
Hard Disk
120GB SSD + 1TB HD
RAM
12GB Corsair XMS3 1333mhz
Scheda Video
Gigabyte GTX 960 OC
Scheda Audio
Integrata
Monitor
SyncMaster 223BW
Alimentatore
Antec HCG-520M
Case
Thermaltake Commander Ms-i Snow Edition
Sistema Operativo
Windows 10 64bit
poi alla domanda "array in kelvin" scrivo ad esempio 1
Ti rendi conto che se inserisci 1 come grado Kelvin, significa che sei quasi allo zero assoluto in C°? Se calcoli in gradi C° da -10 a 40, in kelvin sarà circa da 263 a 313.
Prova ad inserire un valore sensato in Kelvin (263<x<313) e vedi che funziona tutto.
 
Stato
Discussione chiusa ad ulteriori risposte.

Entra

oppure Accedi utilizzando