Programm mit Array



  • Guten Morgen,

    ich soll ein Programm erstellen, bei dem man für einen Monat einen Geldbetrag eingeben kann den man für Pannen zur Verfügung hat. Dann sollen Tage an denen eine Panne passierte und zugehörige Geldbeträge gespeichert werden. An einem Tag sollen auch mehrere Beträge gezahlt werden können. Anschließend sollen die Tage gezählt werdne an denen eine Panne war (ohne Wiederholung) und die Kosten aller Pannen zusammengerechnet werden.
    Ich habe jetzt zwei Probleme. Ich bekomme es zwar hin, dass man zum Beispiel für einen Tag zwei Geldbeträge eingeben kann aber ich würde gerne sagen Geben Sie den Geldbetrag für Tag 1 ein. Dann die Fragen wollen Sie weitere Geldbeträge eingeben? Drücken sie zB 1 und dann kommt wieder Geben Sie einen Geldbetrag für Tag 1 ein. Und das man das so lange machen kann bis man sie mit zB 2 unterbricht. Mit welcher Schleife macht man das und an welcher Stelle wird die eingefügt.
    Und mein zweites Problem: Wie kann man zählen wie viele Tage getroffen wurden. Hab gedacht das macht man vielleicht mit einer if Schleife das wenn der eingegebene Geldbetrag größer 0 ist man +1 rechnet und ansonsten +0 und man so auf die Tage kommt aber das bekomme ich irgendwie nicht hin 😕
    Bin für jede Hilfe dankbar ! 🙂

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {
    
    int Tage[31][2]; 
    int d;
    int summe=0;
    int geldbetrag=0;
    int eingabe=0;
    int restbetrag=0;
    int i;
    
    printf("Guten Tag! \nWillkommen bei Ihrem Haushaltsassistenten. \n"); 
    
    printf("Durch mich koenen sie herausfinden wie viel Geld Sie trotz einem \noder mehrerer Unfaelle noch zur Verfuegung haben. Viel Spass!\n"); 
    
    printf("\n");    
    
    printf("Geben Sie zunaechst den Geldbetrag ein, der Ihnen zur Verfuegung steht:");
    
    scanf("%i",&geldbetrag);
    
    printf("\n");
    
    printf("Das ist aber nicht gerade viel :(\n");
    
    printf("\n");
    
    printf("Geben Sie nun jeweils die Geldbetraege ein, \ndie Sie fuer die Pannen bezahlen mussten.  \n");
    
    printf("Falls Sie an einem Tag keine Panne hatten, Geben Sie eine 0 ein.\n");
    
    printf("\n");
    
    for(d=0; d<31; d++) {
    
             for(i=0; i<2; i++) {
    
             printf("Geben Sie den Geldbetrag fuer den %d. Tag an : ",d+1);
             scanf("%d",&Tage[d][i]);
             summe=summe+Tage[d][i];
             }
    }
    printf("Du musst %d Euro fuer Unfallpannen diesen Monat bezahlen\n\n",summe);
    
    printf("Druecken Sie die 1 wenn Sie wirklich wissen wollen \nwie viel Geld noch uebrig bleibt.\n");
    
    scanf("%i",&eingabe);
    
    printf("\n");
    
    switch(eingabe) {
    
    case 1 : restbetrag=geldbetrag-summe;
             printf("%i Euro \n",restbetrag);
             if (restbetrag<0)
    
             {
                     printf("Ich hoffe Sie haben noch etwas Geld auf der \nhohen Kante liegen =(\n");
             }
              else
              {
             printf("Bei %i Euro koennen Sie ja sogar ihre Frau noch\nzum Essen einladen :)\n",restbetrag);
              }
    case 2 : break;
    }
    
    system("PAUSE");
    return 0;
    }
    

    )



  • Warum nimmst Du nicht ein eindimensionales Array und und addierst jeweils die Benutzereingaben auf den bisherigen Betrag für den Tag, bis der Benutzer 0 eingibt?



  • Du brauchst kein 31er Array von int[2], wie du es derzeit verwendest, sondern, da die Anzahl der Eingaben pro Tag ja beliebig sein soll, einen dynamischen int-Speicher pro Tag, also

    int *Tage[31]
    

    Alternativ würde es auch ein 'ausreichend' großes, d.h. übermäßig dimensioniertes 2. Array machen, also z.B.

    int Tage[31][1000]
    

Anmelden zum Antworten