Problem Ausgabe läuft verkehrt herum



  • Hallo erstmal,

    Ich habe folgendes Problem:

    Ich bin jetzt im ersten Semester meines Studiums und wir haben leider auch Informatik 😉

    Jetzt haben wir heute die erste Aufgabe für den Schein von unserem Lehrbeauftragten bekommen und ich komme einfach nicht mehr weiter.

    Die Aufgabe ist eigentlich recht einfach, nur für mich als absoluten Programmiersprachen Neuling echt eine Qual.

    Aufgabe:

    Erstellen Sie ein C-Programm, das die Verzinsung von Kapital zum Ende jedes Monats darstellt. Das resultierende Listing ist bis einschließlich 03.12.2008 abzugeben.

    Vorgegeben ist ein Startkapital von 100,00 €, ein Zinssatz von 5% und eine Laufzeit von 10 Jahren.

    Die Ausgabe soll in tabellarischer Form nach dem folgenden Muster erfolgen:

    Jan. Feb. Mär. Apr. Mai Jun. Jul. Aug. Sep. Okt. Nov. Dez.

    100,42 100,84 …

    Zur vereinfachten Berechnung pro Monat kann der neue Betrag wie folgt berechnet werden:

    Betrag = Betrag x (1 + Zinssatz / 100 / 12)

    Beenden Sie das Programm mit dem Rückgabewert „0“.

    Hintergrund zur Formel:

    Betrag x (1 + Zinssatz / 100) ergibt den Betrag inklusive Zinsen am Ende eines Jahres. Da lediglich ein einzelner Monat zu betrachten ist, ist mit einem Zwölftel des Zinssatzes zu rechnen. Daraus ergibt sich die angegebene Formel. Die Ungenauigkeit durch diese Zinseszinsberechnung am Ende des Jahres wird in Kauf genommen.

    Für ein erfolgreiches Bestehen dieser Aufgabe sollte Ihr Programm die Berechnungen durchführen und die Ergebnisse tabellarisch ausgeben.

    Ich bin soweit gekommen, dass das Programm die richtigen Werte ausspuckt, nur leider in der falschen Reihenfolge also statt in aufsteigender in absteigender.

    Hier mal mein Code, wenn man das so nennen kann 😃 :

    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    void main()
    {

    int a = 1;
    int i = 100; //Startkapital

    float z = 1.004166667; // entspricht (1+ 5% /100/12) muss aber noch quadriert und mal 100 genommen werden

    float Betrag = ((pow(z,a))*100);

    printf("Startkapital: 100 Euro\n");
    printf("Zinssatz: 5 Prozent\n");
    printf("Laufzeit: 10 Jahre\n");
    printf("------+------+------+------+------+------+------+------+------+------+------+-----\n");
    printf("Jan. | Feb.| M\x84r.| Apr.| Mai| Jun.| Jul.| Aug.| Sep.| Okt.| Nov.| Dez.\n");
    printf("%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f\n",((pow(z,a))*i),((pow(z,a++))*100),((pow(z,a++))*100),((pow(z,a++))*100),((pow(z,a++))*100),((pow(z,a++))*100),((pow(z,a++))*100),((pow(z,a++))*100),((pow(z,a++))*100),((pow(z,a++))*100),((pow(z,a++))*100),((pow(z,a++))*100));
    printf("------+------+------+------+------+------+------+------+------+------+------+-----\n");
    system("Echo.&Pause");
    }

    Wenn mir jemand erklären könnte wieso das nicht richtig herum läuft wäre ich sehr dankbar.

    MFG Michael



  • Deine riesige printf-Anweisung geht so nicht. Ich glaube, es ist undefiniert, an welcher Stelle a nun tatsächlich das erste Mal inkrementiert wird. Deine Lösung ist eine Schleife!

    http://de.wikipedia.org/wiki/Schleife_(Programmierung)



  • so z.B.

    #include<stdio.h> 
    #include<stdlib.h> 
    #include<math.h> 
    
    void main() 
    { 
    int monat = 1;
    int a = 1; 
    int i = 100; //Startkapital 
    double z;
    double Betrag;  
    
    z = 1 + (5.0 / 100.0 / 12.0);
    Betrag = ((pow(z,a))*100); 
    
    printf("Startkapital: 100 Euro\n"); 
    printf("Zinssatz: 5 Prozent\n"); 
    printf("Laufzeit: 10 Jahre\n"); 
    printf("------+------+------+------+------+------+------+------+------+------+------+-----\n"); 
    printf("Jan. | Feb.| M\x84r.| Apr.| Mai| Jun.| Jul.| Aug.| Sep.| Okt.| Nov.| Dez.\n");
    while (monat <= 12)
    {
      printf("%.2f | ",((pow(z,monat))* i));
      monat++;
    } 
    
    printf("------+------+------+------+------+------+------+------+------+------+------+-----\n"); 
    system("Echo.&Pause"); 
    }
    

Anmelden zum Antworten