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("\nFr 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 fr n=110
    //Asciicode fr 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
    David

    PS: 😋 😋 😋 😋 😋 😋 😋 😋 😋



  • 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!


Anmelden zum Antworten