L’agenzia di viaggi “Castrolibero Sun” organizza durante tutto l’anno viaggi nella Death Valley, la celebre area desertica che si trova a circa 300 Km a ovest di Las Vegas in Nevada. Una delle principali informazioni richieste dai clienti prima di prenotare un viaggio è la temperatura media registrata nella valle. Implementare un software che permette di prendere in input N temperature in gradi Celsius, effettui la conversione in Kelvin per ognuna di esse e permetta di calcolare la media e la massima fra esse. Restituire questa informazione all’utente.
Analisi del problema
Il software deve prendere un numero fissato N di temperature in input e dopo aver eseguito per ognuna di esse la conversione in gradi Kelvin, deve permettere di trovare il massimo e la media fra esse. (algoritmo iterativo)
Dati Input: N, temp*
Dati Output: massimaTemperatura, mediaTemperature
Progetto
Iniziamo a progettare l’algoritmo sapendo che è necessario prendere in input N temperature. Per effettuare questa operazione realizziamo una struttura iterativa per il conteggio:
Questa struttura prevede di prendere in input un valore N e fare partire una variabile contatore da 0 facendola avanzare ad ogni passo effettuato. All’interno dell’iterazione è necessario inserire tutte le istruzioni che si ripetono N volte. Dovremo prendere per ogni passo una temperatura espressa in gradi Celsius, convertirla in gradi Kelvin ed infine aggiornare il massimo e il totale per il calcolo finale della media.
Il totale si può ottenere creando una variabile tot e aggiornando il suo contenuto ogni volta che viene inserito in input un nuovo valore. (algoritmo iterativo)
Infine la seguente struttura algoritmica viene usata per il calcolo del massimo:
Se mi trovo al primo passo (cont==0) chiaramente il valore preso in input corrisponde alla massima temperatura inserita finora, altrimenti se la temperatura inserita supera quella massima allora il massimo deve essere aggiornato (max=tempKelvin). Infine è necessario stampare i valori attesi all’utente:
Il progetto completo è il seguente
Implementazione
#include <iostream>
using namespace std;
int main()
{
int N, cont, tempCelsius, tempKelvin,tot, max;
float media;
cout<<"Software per il calcolo delle temperature"<<endl;
cout<<"Inserisci il numero di temperature da immettere: "<<endl;
cin>>N;
cont=0;
tot=0;
while(cont<N)
{
cout<<"Dammi la temperatura in gradi Celsius";
cin>>tempCelsius;
tempKelvin=tempCelsius + 273.15;
tot= tot+tempKelvin;
if(cont==0)
{
max=tempKelvin;
}else
{
if(tempKelvin>max)
{
max=tempKelvin;
}
}
cont++;
}
media = tot/N;
cout<<"La media fra le temperature inserite è "<<endl;
cout<<media;
cout<<"La massima temperatura è "<<endl;
cout<<max;
return 0;
}
Torna a iterazioni