C-Programm < Softwaretechnik+Pro < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 00:26 So 20.06.2010 | Autor: | Stift82 |
Aufgabe | Schreiben Sie ein C-Programm zur Zinsberechnung, dass bei Eingabe von jährlichem Sparbetrag, gewünschtem Endbetrag und dem jährlichen Zinssatz ausgibt, wie viele Jahre man sparen muss, bis der vorgegebene Endbetrag erreicht ist. |
Hallo Leute,
das Programm habe ich soweit schon geschrieben und befindet sich im Anhang, jedoch habe ich eine kleine Problematik und ich weiss nicht woran es liegt.
Die Werte für den gewünschten Endbetrag und den Zinssatz lassen sich trotz der scanf-Anweisung nicht einlesen und das Programm arbeitet automatisch weiter...
Wäre schön, wenn ihr mir einen Tipp geben könntet...
Gruß
Stift
Dateianhänge: Anhang Nr. 1 (Typ: doc) [nicht öffentlich]
|
|
|
|
Hallo!
Zunächst könntest du den code auch hier im Forum direkt posten - schließe ihn einfach in [code][/code] ein, dann sieht es auch ordentlich aus. (Gut, dafür geht das Syntaxhighlighting verloren)
Außerdem ist nicht jeder gewillt, fremde Word-Dokumente zu öffnen...
Ich sehe, daß du der scanf-Anweisung eine genaue Formatierung mitgibts - die ist aber doch egal, denn du weißt nicht, was der Benutzer eingibt. Verwende doch einfach ein "%f", die genaue Formatierung brauchst du nur bei der Ausgabe. Ich würde wetten, daß das der Fehler ist.
Nebenbei wäre es gut, wenn du pro Zeile nur einen Befehl benutzt, das macht es übersichtlicher. Auch bei der Variablendeklaration, bei der du ja auch noch Kommentare unterbringen möchtest.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:31 So 20.06.2010 | Autor: | fencheltee |
> Schreiben Sie ein C-Programm zur Zinsberechnung, dass bei
> Eingabe von jährlichem Sparbetrag, gewünschtem Endbetrag
> und dem jährlichen Zinssatz ausgibt, wie viele Jahre man
> sparen muss, bis der vorgegebene Endbetrag erreicht ist.
> Hallo Leute,
>
> das Programm habe ich soweit schon geschrieben und befindet
> sich im Anhang, jedoch habe ich eine kleine Problematik und
> ich weiss nicht woran es liegt.
>
> Die Werte für den gewünschten Endbetrag und den Zinssatz
> lassen sich trotz der scanf-Anweisung nicht einlesen und
> das Programm arbeitet automatisch weiter...
>
> Wäre schön, wenn ihr mir einen Tipp geben könntet...
>
> Gruß
>
> Stift
hallo,
übersichtlich kannst du es auch mit einem link von hier http://pastie.org/ versuchen
gruß tee
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 18:07 So 20.06.2010 | Autor: | Stift82 |
Aufgabe | Das Programm soll nach Anfrage aus sich selbst wiederholbar sein! |
Hallo Event_Horizon,
erstmal vielen Dank für deinen Tipp, das hat super geklappt...
Nun soll das Programm erweitert werden, indem es sich wiederholen kann.
Ich habs schon programmiert, allerdings habe ich das gleiche Problem... Auch bei unformatierter Eingabe läuft das Programm weiter ab.
(Ohne die Eingabe von 'ja' oder 'nein'...)
Wäre lieb, wenn du mir nochmal einen Tipp geben könntest.
Gruß
Stift
1: | #include<stdio.h>
| 2: | #include<math.h>
| 3: |
| 4: | main()
| 5: | {float Ko, p, Kn, Ke, Knv; // Ko=Sparbetrag p=Zinssatz Ke=gewünschter Endbetrag Kn=summierter Betrag aus Sparbeitrag und Zinseszins
| 6: | int n, w; // n=Anzahl der Jahre Knv=Variable für Zins desselben Zyklus w=eine Programm interne Variable für die Wiederholung
| 7: | char j; // j=ja
| 8: | printf("\n Wieviele Jahre muss ich sparen um meinen Wunsch zu erfuellen?\n\n");
| 9: | printf("jaehrlicher Sparbeitrag: ");
| 10: | scanf("%f",&Ko); // Formatierung entfällt, wegen undefinierter Eingabe (das Programm arbeitet daneben ohne Eingabe der Werte selbstständig weiter
| 11: | printf("\n");
| 12: | printf("gewuenschter Endbetrag: ");
| 13: | scanf("%f",&Ke);
| 14: | printf("\n");
| 15: | printf("Zinssatz: ");
| 16: | scanf("%f",&p);
| 17: | printf("\n\n");
| 18: |
| 19: | w=0;
| 20: | do{
| 21: | n=0; // Zwischenspeicher wird genullt
| 22: | Knv=0;
| 23: | Kn=3000; // Anfangswert entspricht damit dem Sparbetrag
| 24: | while(Kn<=Ke) // Endbedingung ist damit der Sparbetrag + ZinsesZins ist <= dem gew. Endbetrag
| 25: | {Knv=(Kn*p)/100;
| 26: | Kn=Kn+Ko+Knv;
| 27: | Knv=0;
| 28: | n=n+1;
| 29: | }
| 30: | printf(" Ich muss sparen: "); printf("%i ",n); printf("Jahre\n\n");
| 31: | printf(" Wiederholung des Programms? (j/n)");
| 32: | scanf("%c",&j);
| 33: |
| 34: | if(j=='j') w=0;
| 35: | else w=1;
| 36: | }while(w==0);
| 37: | printf("\n\n Programmende!!!\n\n");
| 38: | }
|
|
|
|
|
|
> Das Programm soll nach Anfrage aus sich selbst wiederholbar
> sein!
> Hallo Event_Horizon,
>
> erstmal vielen Dank für deinen Tipp, das hat super
> geklappt...
>
> Nun soll das Programm erweitert werden, indem es sich
> wiederholen kann.
>
> Ich habs schon programmiert, allerdings habe ich das
> gleiche Problem... Auch bei unformatierter Eingabe läuft
> das Programm weiter ab.
> (Ohne die Eingabe von 'ja' oder 'nein'...)
>
> Wäre lieb, wenn du mir nochmal einen Tipp geben
> könntest.
>
> Gruß
>
> Stift
>
> 1: | #include<stdio.h>
| 2: | > #include<math.h>
| 3: | >
| 4: | > main()
| 5: | > {float Ko, p, Kn, Ke, Knv; // Ko=Sparbetrag p=Zinssatz
| 6: | > Ke=gewünschter Endbetrag Kn=summierter Betrag aus
| 7: | > Sparbeitrag und Zinseszins
| 8: | > int n, w; // n=Anzahl der Jahre Knv=Variable
| 9: | > für Zins desselben Zyklus w=eine Programm interne
| 10: | > Variable für die Wiederholung
| 11: | > char j; // j=ja
| 12: | > [mm]printf("\n[/mm] Wieviele Jahre muss ich sparen um meinen
| 13: | > Wunsch zu [mm]erfuellen?\n\n");[/mm]
| 14: | > printf("jaehrlicher Sparbeitrag: ");
| 15: | > scanf("%f",&Ko); // Formatierung entfällt, wegen
| 16: | > undefinierter Eingabe (das Programm arbeitet daneben ohne
| 17: | > Eingabe der Werte selbstständig weiter
| 18: | > [mm]printf("\n");[/mm]
| 19: | > printf("gewuenschter Endbetrag: ");
| 20: | > scanf("%f",&Ke);
| 21: | > [mm]printf("\n");[/mm]
| 22: | > printf("Zinssatz: ");
| 23: | > scanf("%f",&p);
| 24: | > [mm]printf("\n\n");[/mm]
| 25: | >
| 26: | > w=0;
| 27: | > do{
| 28: | > n=0; // Zwischenspeicher wird genullt
| 29: | > Knv=0;
| 30: | > Kn=3000; // Anfangswert entspricht damit dem Sparbetrag
| 31: | > while(Kn<=Ke) // Endbedingung ist damit der Sparbetrag +
| 32: | > ZinsesZins ist <= dem gew. Endbetrag
| 33: | > {Knv=(Kn*p)/100;
| 34: | > Kn=Kn+Ko+Knv;
| 35: | > Knv=0;
| 36: | > n=n+1;
| 37: | > }
| 38: | > printf(" Ich muss sparen: "); printf("%i ",n);
| 39: | > [mm]printf("Jahre\n\n");[/mm]
| 40: | > printf(" Wiederholung des Programms? (j/n)");
| 41: | > scanf("%c",&j);
| 42: | >
| 43: | > if(j=='j') w=0;
| 44: | > else w=1;
| 45: | > }while(w==0);
| 46: | > [mm]printf("\n\n Programmende!!!\n\n");[/mm]
| 47: | > }
| 48: | > |
>
setze ein
fflush(stdin);
vor das scanf!
gruß tee
|
|
|
|
|
Wobei man sich die letzte if-Anweisung sparen kann. Das while kann direkt wile(j=='j') lauten.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 20:19 So 20.06.2010 | Autor: | Stift82 |
Hallo ihr beiden,
vielen Dank für eure Tipps. Es klappt wunderbar.
Gruß
Stift
|
|
|
|