-

[RISOLTO] Aiuto per completamento esercizio

Stato
Discussione chiusa ad ulteriori risposte.
#16
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:

rodhellas

Utente Attivo
1,414
378
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
#19
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.

Discussioni Simili


Entra