000
19.12.2015, 00:48 Uhr
Yadgar
|
Hi(gh)!
Es hat bis gestern funktioniert: für jeden Monat das korrekte Monats-Temperaturmittel und am Ende das Jahres-Temperaturmittel.
Dann muss ich irgendetwas verändert haben (leider weiß ich nicht mehr, was), und seither wird für alle Monate wie auch für das ganze Jahr der Monatsmittelwert für Januar angezeigt. Warum?!?
Hier ist der Code:
C++: |
#include <iostream> #include <fstream> #include <string> #include <iomanip> #include <sstream> #include <math.h>
using namespace std;
int main() { // READING IN ORIGINAL DATA
string station; string jahr; ifstream Quelle; string QuelleName, zeile, subzeile; string monate[] = {"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"}; char zahl; unsigned short monat, messtemp = 0, messnied, tag = 0, pos1, pos2, eistage = 0, frosttage = 0, warmtage = 0, sommertage = 0, tropentage = 0, kalendertag, jahrzahl=0, i; unsigned short messtemp_monat[12]; unsigned short monlaengen[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; float temp, jahrsumm_temp = 0, jahrmitt_temp; float monsummen_temp[12]; float monmittel_temp[12]; stringstream conv; cout << "Station: "; cin >> station; cout << "Jahr: "; cin >> jahr; for (i=0; i<4; i++) jahrzahl += (jahr[i]-48)*pow(10, 3-i); cout << jahrzahl << endl; if (jahrzahl % 4 == 0) // Berücksichtigung von Schaltjahren monlaengen[1] = 29; for (monat = 1; monat <= 12; monat++) { monsummen_temp[monat-1] = 0; messtemp_monat[monat-1] = 0; conv << jahr << "-" << setw (2) << setfill ('0') << monat << setw (0) << "_Temperatur.txt"; conv >> QuelleName; Quelle.open(QuelleName.c_str());
if (!Quelle) { cerr << QuelleName << " kann nicht geöffnet werden!\n"; return 1; }
while (getline(Quelle, zeile)) { pos1 = zeile.find("\t"); pos2 = zeile.rfind("°"); subzeile = zeile.substr(pos1+1, pos2-pos1-1); if (subzeile.find("--") == 0) // fehlende Messdaten continue; pos1 = subzeile.find(","); subzeile.replace(pos1, 1, "."); temp = stof(subzeile); jahrsumm_temp += temp; monsummen_temp[monat-1] += temp; messtemp++; messtemp_monat[monat-1]++; pos1 = zeile.find("."); /* subzeile = zeile.substr(0, pos1); cout << subzeile << endl; */ } Quelle.close(); monmittel_temp[monat-1] = monsummen_temp[monat-1]/messtemp_monat[monat-1]; cout << "Monatsmittel " << monate[monat-1] << ": " << monmittel_temp[monat-1] << endl; } jahrmitt_temp = jahrsumm_temp/messtemp; cout << jahrsumm_temp << endl; cout << messtemp << endl; cout << "Jahres-Temperaturmittel von " << station << " für " << jahr << ": " << jahrmitt_temp << " °C" << endl;
return 0; }
|
Bis bald im Khyberspace!
Yadgar -- Flagmaker - ein Programmier-Blog |