Frage zu arrays?
-
Hallo zusammen, dies ist mein erster beitrag...
Motiviert wurde er durch ein problem, welches sich aus meinen Hausaufgaben ergibt...
Die Hausaufgabe lautet:
"[...]Dabei wurde ein Programm geschrieben, das Wetterdaten für eine Woche einliest, die Höchsttemperatur und Tiefsttemperatur berechnet und ausgibt.
Verwenden Sie Arrays für die Datenspeicherung.
Eingabeinformationen sollen für jeden Tag einer Woche die Tagestiefsttemperatur, die Tageshöchsttemperatur und die Niederschlagsmenge sein.
Die Daten sollen für 7 Tage erfasst und jetzt auch gespeichert werden.
Am Ende soll die Tiefsttemperatur der Woche, die Höchsttemperatur der Woche und die Gesamtniederschlagsmenge ausgegeben werden, die Sie mit Ihrem C‐Programm ermitteln sollen.
Das Programm soll wie folgt aussehen:Montag:
Tagestiefsttemperatur (in Grad Celsius): 2
Tageshoechsttemperatur (in Grad Celsius): 12
Niederschlagsmenge (in mm): 0
Dienstag:
Tagestiefsttemperatur (in Grad Celsius): 5
Tageshoechsttemperatur (in Grad Celsius): 13
Niederschlagsmenge (in mm): 8
..
Sonntag:
Tagestiefsttemperatur (in Grad Celsius): 3
Tageshoechsttemperatur (in Grad Celsius): 14
Niederschlagsmenge (in mm): 11
Tiefsttemperatur der Woche: 2 Grad Celsuis
Hoechsttemperatur der Woche: 14 Grad Celsuis
Gesamtniederschlagsmenge der Woche: 35 mmRealisieren Sie das Einlesen der Werte in die von Ihnen festgelegte Datenstruktur und die Berechnungen und Ausgaben in Ihrem Programm
"Das ganze würde ich über eine for-Schleife laufen lassen, in der die Laufvariable genutzt wird um die Variablen in Arrays für tages-höchst und tiefsttemperaturen sowie die Niederschlagsmengen einzulesen.
Die Ausgabe des Wochentags (mo-di) macht mir allerdings Probleme...
der Plan war in einen Array Montag,Dienstag etc. zu speichern und ebenfalls über die Laufvariable ausgeben zu lassen, aber das bekomme ich nicht hin...
jemand eine Idee?
-
const char *Wochentage[] = { "Montag", "Dienstag", "Mittwoch", ... ,"Sonntag", NULL}; int i; for( i = 0;Wochentage[i] != NULL; ++i) { puts(Wochentage[i]; }
Bei den ... trägst du selber die fehlenden Tage ein.
-
Was bedeutet das puts? Ich hab das immer über printf versucht...
ebenso ist der * vor Wochentage neu für michBin da leider noch nicht so eingefuchst...
Aber auf jeden Fall schonmal Danke!
-
http://www.cplusplus.com/reference/cstdio/puts/
Du arbeitest mit Arrays und kennst keine Zeiger?
Du kannst auch normal zählen
for( i = 0; i < 7; ++i) { puts(Wochentage[i]); // oben habe ich die schließende Klammer vergessen }
-
puts
dient zur Ausgabe von C-Strings (und noch einem '\n')printf
muss erst den Formatstring interpretieren. Das fällt beiputs
weg.
-
Ich hab das jetzt folgendermaßen:
int main(int argc, const char * argv[]) { int höchsttemperatur[7], tiefsttemperatur[7], Niederschlag[7], i; const char *Wochentage[] = { "Montag:", "Dienstag:", "Mittwoch:", "Donnerstag:", "Freitag:", "Samstag:", "Sonntag:"}; for( i = 0;i<7; i++) { puts(Wochentage[i]); printf("Geben Sie die Tagestiefsttemperatur ein(in °C):"); scanf("%i",&tiefsttemperatur[i]); printf("Geben Sie die Tageshöchsttemperatur ein(in °C):"); scanf("%i",&höchsttemperatur[i]); printf("Geben Sie die Niederschlagsmenge ein(in mm):"); scanf("%i",&Niederschlag[i]); } int a=0, b=999, c=0; for (i=0; Wochentage[i] != NULL; i++) { if (höchsttemperatur[i]>a) { höchsttemperatur[i]= a; } if (tiefsttemperatur[i]<b) { tiefsttemperatur[i]= b; } c=c+Niederschlag[i]; } printf("%i %i %i",a,b,c); }
Aber das funzt noch nicht...
-
Habe den Fehler gefunden!
Vielen Dank für eure HilfeLösung:
int main(int argc, const char * argv[]) { int höchsttemperatur[7], tiefsttemperatur[7], Niederschlag[7], i; const char *Wochentage[] = { "Montag:", "Dienstag:", "Mittwoch:", "Donnerstag:", "Freitag:", "Samstag:", "Sonntag:"}; for( i = 0;i<7; i++) { puts(Wochentage[i]); printf("Geben Sie die Tagestiefsttemperatur ein(in °C):"); scanf("%i",&tiefsttemperatur[i]); printf("Geben Sie die Tageshöchsttemperatur ein(in °C):"); scanf("%i",&höchsttemperatur[i]); printf("Geben Sie die Niederschlagsmenge ein(in mm):"); scanf("%i",&Niederschlag[i]); } int a=0, b=999, c=0; for (i=0; i<7; i++) { if (höchsttemperatur[i]>a) { a= höchsttemperatur[i]; } if (tiefsttemperatur[i]<b) { b= tiefsttemperatur[i]; } c=c+Niederschlag[i]; } printf("%i %i %i",a,b,c); }
-
Du solltest dir nochmal ansehen, was (und wie rum) bei deinen if-Zweigen passiert.
Und in einer kalten Winterwoche bekommst du auch keine richtigen Ergebnisse.
Es gibt bessere Anfangswerte.Temperaturen können auch Kommastellen haben.
-
Habe a nun keinen Anfangswert zugewiesen und b 99, somit wird alles was kleiner 99 ist doch als Tiefsttemperatur genommen und die höchste als höchsttemperatur...oder?
Kommastellen würde ich mit float hinbekommen oder?
-
Primax schrieb:
Habe a nun keinen Anfangswert zugewiesen
Das ist schlecht. Wenn du einen Integer nicht initialisierst, hat er irgendeinen unvorhersehbaren Wert.
und b 99, somit wird alles was kleiner 99 ist doch als Tiefsttemperatur genommen
Und wenn eine Temperatur größer ist als 99? Mach es doch so, dass es für egal welche Eingabe funktioniert.
und die höchste als höchsttemperatur...oder?
Siehe oben. Das Ergebnis wäre unvorhersehbar.
Kommastellen würde ich mit float hinbekommen oder?
Ja, das wäre eine Möglichkeit.