2016-11-15 7 views
-2

Hallo, ich arbeite gerade an einem Problem, das ich in meiner Highschool C++ Klasse bekommen habe.2 dimensionale Arrays in C++

Wir sollten ein Programm schreiben, das Arrays enthält, in denen Sie die höchste monatliche Temperatur und die niedrigste speichern können. Und auch, sollte das Programm ein Schleifen hat jeweils folgende berechnen:

  • Jahr durchschnittlicher Höchsttemperatur

  • Jahresdurchschnittsniedertemperatur

  • Höchste Monat durchschnittliche Höchsttemperatur

    • Niedrigste monatliche Durchschnittstemperatur

Ich bin mit der monatlichen höchsten und niedrigsten Durchschnittstemperatur fest und könnte Hilfe brauchen. Mein Code so weit ist:

#include <iostream> 

using namespace std; 

int main() 

{ 

class location; 
int high[12]; 
int low[12]; 
int i = 1; 
int avgh, avgl; 


//set location 
std::string location; 
std::cout << "Where is the location of your data: "; 
std::getline(std::cin, location); 

cout << endl << endl; 

//initialize array high 
for (i = 1; i < 13; i++) 
{ 
    cout << "Enter temperature high of month " << i << " "; 
    cin >> high[i]; 
    avgh += high[i]; 
} 

cout << endl << endl; 

//initialize array low 
for (i = 1; i < 13; i++) 
{ 
    cout << "Enter temperature low of month " << i << " "; 
    cin >> low[i]; 
} 

cout << endl << endl; 

//adds highs together 
    for (i = 1; i < 13; i++) 
{ 
    avgh += high[i]; 
} 
cout << "The yearly average high is: " << avgh/12 << endl; 

    //adds lows together 
    for (i = 1; i < 13; i++) 
{ 
    avgl += low[i]; 
} 
cout << "The yearly average low is: " << avgl/12 << endl; 



return 0; 
} 
+1

FYI-Arrays sind in C++ 0-indiziert, was bedeutet, dass die gültigen Elemente in einem Array der Länge 4 die Indizes 0,1,2 und 3 haben. Sie könnten [ein gutes C++ Buch] (http: //stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list), um Sie bei den Grundlagen und der Klasse zu unterstützen. – jaggedSpire

+0

Sie gehen gut, denken Sie daran, dass Arrays von 0 beginnen, nicht von 1 – Marco

+0

'für (i = 1; i <13; i ++)' - Gewöhnen Sie sich an "0" als Startindex verwenden. Arrays in C++ beginnen mit "0", nicht mit "1". Der Versuch, Dinge künstlich zu starten, indem Arrays bei "1" künstlich gestartet werden, kann und wird zu Fehlern und Pufferüberläufen führen, wenn das Programm viel größer wird. – PaulMcKenzie

Antwort

1
for (i = 1; i < 13; i++) 

Auch das ist falsch. Es sollte sein:

for (i = 0; i < 12; i++) 

Indizes in C++ sind Null-basiert.


//adds highs together 
for (i = 1; i < 13; i++) 
{ 
    avgh += high[i]; 
} 

Sie haben dies bereits während der Initialisierung der Bühne getan, um dies zu falschen Ergebnissen führt. Allerdings haben Sie nicht das gleiche für niedrig, so dass Sie den niedrigen Teil behalten können. Jedenfalls ist es besser, sie beide während der Initialisierung oder beide getrennt zu machen, um einen einheitlichen Weg zu wahren.

+0

ah danke. Das erklärt einiges. Sry über meine dumme Frage, aber ich habe gerade angefangen, C++ zu lernen –

Verwandte Themen