2011-10-11 6 views
1

Je dois écrire un programme qui demande à l'utilisateur le nombre d'années, puis demander à l'utilisateur les précipitations en mm pour chaque mois pendant ces années. Je dois calculer le nombre total de mois, le nombre total de précipitations, la pluviométrie moyenne par mois, calculer la pluviométrie maximum pour tous les mois, et afficher le nom du mois (traduire le numéro du mois au nom) et l'année ayant le maximum de pluie. J'ai écrit ce code jusqu'à présent, mais je n'arrive pas à comprendre comment produire exactement le nom exact du mois et l'année qui a eu les précipitations les plus élevées, même si j'ai calculé la valeur des précipitations la plus élevée.C++ boucles imbriquées

const int numMonths = 12; 
int numYears, months, largest = 0; 
double sum = 0; 


cout << "Please enter the number of years: "; 
cin >> numYears; 
cin.ignore(); 

for (int years = 1; years <= numYears; years ++) 
{ 
    for (int months = 1; months <= numMonths; months ++) 
    { 
    double rain; 
    cout << "Please enter the rainfall in mm for year " << years << ", month " << months << "\n"; 
    cin >> rain; 
    sum += rain; 
    if (rain > largest){ 

     largest = rain; 

    } 
    cin.ignore(); 
    } 
} 

int totalMonth = numYears*numMonths; 
double avgRain = sum/totalMonth; 
cout << "Total number of months: " << totalMonth << "\n"; 
cout << "Total inches of rainfall for the entire period: "<< sum << "\n"; 
cout << "Average rainfall per month for the entire period: " << avgRain << "\n"; 
cout << "Highest rainfall was " << largest << ; 






cin.get(); 
return 0; 

Répondre

3

Que diriez-vous quelque chose comme:

if (rain > largest_rain){   
     largest_rain = rain; 
     largest_month = months; 
     largest_year = years; 
    } 
+0

Oui, mais comment pourrais-je obtenir le nom du mois courant pour apparaître? Comme janvier, février, etc. – user566094

+0

@ user566094 Vous avez besoin d'une table de recherche. Vous pouvez utiliser un 'vecteur ' puisque vos index sont des entiers (et vous les décalés de 1). –

+0

Une énumération conviendrait ici: [lien] (http://msdn.microsoft.com/fr-fr/library/2dzy4k6e (v = vs.80) .aspx). – deyur

1

Pour mapper le nombre de mois à des noms que je les mettrais dans un tableau de chaînes.

string[] months = {"January","February","March"...}; 

Ensuite, prenez votre numéro de mois (il faut soustraire 1 si vous êtes 1 indexation) et imprimer cet indice dans le tableau.

Alors tous ensemble, il ressemble à ceci:

string [] month = {"January","February", "March"/*Fill in the rest of the months*/}; 
int largestMonthIndex = largest_month-1; 
cout << "Month that the largest rain fall occurred in: " <<month[largetMonthIndex]; 
+0

il me dit que '<<' aucun opérateur trouvé qui prend un type d'opérande droit 'std :: string' (ou il n'y a pas de conversion acceptable – user566094

+0

@ user566094: Cela signifie que votre fichier source manque soit '#include 'ou' #include '. – ildjarn

+0

Hey savez-vous comment je peux effectuer une validation d'entrée utilisateur qui implémente que l'utilisateur ne peut pas entrer une valeur négative pour la pluie? – user566094