Programm, was Durschnittstemperatur berechnet
-
Hi Leute,
Ich muss für die Schule ein Programm schreiben, was mir die Durschschnittstemperatur nach eingabe, von den verschiedenen Werten eines Monates erechnet.
Dazu habe ich mir ein Menü gebaut.
Und zwar sieht das folgendermaßen aus, wenn man das Programm startet:Menü:
1. Temperatur einlesen
2. Temperatur ausgeben
3. Durschschnittstemperatur ausgeben<Esc> zum Beenden
Nun bin ich gerade bei dem schwersten aller Punkte- dem ersten Punkt.
Hier soll die Temperatur mit Hilfe eines Arrays namens "Tagestemperatur[31]" eingelesen werden.Gegen Ende gibt der Computer dann nocheinmal aus, was genau man eingetipt hat... das könnt dann hier so aussehen:
"Okay, an Tag 20 betrug die Temperatur 30°C Ihr Computer hat das nun gespeichert"
Leider funktioniert das nicht und egal welche Temperatur ich für welchen Tag eingebe steht da als Temperatur immer "74°C"... das ist schwer komisch.
Guckt euch also bitte mal meinen Code hier an:#include <conio.h> #include <stdio.h> void main(void) { int entscheid; int janein=0,tag=0,tagestemperatur[30]={0},tagesanzahl=0; textbackground(RED);textcolor(GREEN);clrscr(); printf("Programm zum Einlesen, Ausgeben der Durschnittstemperatur eines Monats.\n\n\n"); printf("Menue:\n\n"); printf("1: Temperatur einlesen\n2: Tagestemperatur ausgeben\n3: Durchschnittstemperatur berechnen\n\n\n <Esc> Ende\n\n\n"); scanf("%i",&entscheid); if (entscheid==1) { do{ printf("\nFr welchen Tag m”chten Sie die Temperatur einlesen?\n"); scanf("%i",&tag); if (tag>=31||tag<=1) { printf("FEHLER!!!\nSIE HABEN EINE UNZULŽSSIGE MONATSANZAHL EINGEGEBEN");getch();exit();} else printf("Und wie soll die Temperatur an Tag %i dann sein?\n",tag); scanf("%i",&tagestemperatur[tag]); printf("Okay, an Tag %i betrug die Temperatur %iøC\nIhr Computer hat dies nun gespeichert!\n\n",tag,tagestemperatur); printf("Wollen Sie noch weitere Temperaturen einlesen? n/j\n"); tagesanzahl++; janein=getch(); //Asciicode fr n=110 //Asciicode fr j=106 }while(janein==106); } if (entscheid==2) { if (tagesanzahl==0){printf("ES WURDEN NOCH KEINE TAGE EINGEGEBEN!!!! DU ZONK!!!!"); } } if (entscheid==3) { } getch(); }
Okay!
Danke für eure Hilfe!!!!cya
DavidPS:
-
Oha!
Diesen Thread bitte wieder löschen... mein Fehler war total leicht.. naja wer spaß am fehlersuchen hat kanns sich ja noch ansehen xDDD
-
lass mich raten - "printf("Temperatur %i",tagestemperatur**[tag]**);" hast du vergessen.
btw, zwei weitere Fehler:
dein Array ist etwas zu klein für die Eingaben - int[30] hat die Indizes von 0 bis 29
was machst du in der Mittelwert-Berechnung, wenn der User eine Tagestemperatur mehrfach eingibt?
ist es wirklich notwendig, bei einer Fehleingabe per exit() das Programm abzuschießen?
-
lass mich raten - "printf("Temperatur %i",tagestemperatur[tag]);" hast du vergessen.
PERFEKT!!!!!!!!!!!! Ich bin sicher du hättest die Frage beantworten können
dein Array ist etwas zu klein für die Eingaben - int[30] hat die Indizes von 0 bis 29
Ja wie?? :-O- Nicht von 0-30... also 31 Variablen?
was machst du in der Mittelwert-Berechnung, wenn der User eine Tagestemperatur mehrfach eingibt?
Da ist doch so ne Variable... die zähle ich hoch... bei der Durschnittstemperatur werde ich einfach alle Arrays miteinander addieren und dann durch die hochgezählte Variable "tagesanzahl" teilen...
ist es wirklich notwendig, bei einer Fehleingabe per exit() das Programm abzuschießen?
Ich hatte überlegt ich pack das einfach in eine Schleife, oder geht das nicht???
Wie würdest du das machen???
GrußDavid
PS:
-
Wieso machst du immer 3 Threads zu einem Thema auf?
-
Ist ne schlechte Angewohnheit....
-
777 schrieb:
dein Array ist etwas zu klein für die Eingaben - int[30] hat die Indizes von 0 bis 29
Ja wie?? :-O- Nicht von 0-30... also 31 Variablen?
Nein - int[30] enthält 30 Elemente (von 0 bis 29).
(btw, du versuchst sogar zwei Felder über's Ende zu schreiben, wenn du auf temp[31] zugreifen willst.was machst du in der Mittelwert-Berechnung, wenn der User eine Tagestemperatur mehrfach eingibt?
Da ist doch so ne Variable... die zähle ich hoch... bei der Durschnittstemperatur werde ich einfach alle Arrays miteinander addieren und dann durch die hochgezählte Variable "tagesanzahl" teilen...
Und da sehe ich einen logischen Fehler: Wenn der User z.B. dreimal einen Wert für den 25. einträgt, steht in deinem Array nur ein Wert (die letzte Eingabe), aber in tagesanzahl der Wert 3.
ist es wirklich notwendig, bei einer Fehleingabe per exit() das Programm abzuschießen?
Ich hatte überlegt ich pack das einfach in eine Schleife, oder geht das nicht???
Wie würdest du das machen???
Genau so, in einer Schleife:
int tag; do { printf("bitte Tag eingeben:"); scanf("%d",&tag); if(tag<1||tag>31) printf("FEHLER\n"); } while(tag>=1&&tag<=31);
-
nicht schlecht, nicht schlecht.... ich werd die fehler dann mal beheben... DANKE HAbe jetzt auch Funktionen verwendet... voll praktisch die Dinger!