Euro in € umwandeln C
-
Hallo,
das ist meine C-Programmieraufgabe: Eingabe
Die Eingabe soll mit Kapital in €, Zinsfuß in % und Tage in D immer gefolgt von einem Leerzeichen folgendermaßen aussehen:
Please enter your capital in €, your interest rate in % and the number of days in D followed by a blank:
100€ 1% 360T
AusgabeEs soll der Zins in € ausgegeben werden. Beispiel zur obigen Eingabe:
Interest = 1.00€
ich wollte fragen, wie ich das mit den Zeichen löse? ich hatte vor eigentlich char variablen zu speichern: char euro;
und dann die scanf eingäbe mit einer if Schleife zu prüfen also if(euro!='€'){printf}
Wieso geht das nicht und wie kann ich das lösen
-
Was hast du denn bisher und was ist konkret dein Problem?
-
#include <stdio.h>
#include <stdlib.h>int main (){
int c;
float p, b, d;
char euro, prozent, tage;printf("Please enter your capital in €, your interest rate in %% and the number of days in D followed by a blank:"); scanf("%d %f %f", &c, &p, &d); b = c*(p/100)*d/360; printf("Interest = %.2f€", b);
}
also ich habe die Aufgabe so gelöst und erhalte auch die Ergebnisse. Es fehlt nur noch die Verbindung zu den Zeichen.
-
Ich würde das erst einmal ignorieren. Das Überprüfen von genauen Eingabeformaten ist nicht wirklich lehrreich. Das
%
undT
prüfst du derzeit ja auch nicht.Ansonsten: scanf prüft doch schon für dich, ob eine Eingabe einem Formatstring entspricht. Das funktioniert auch mit €, denn warum sollte es nicht? Keine Not, da selber etwas zu basteln.
num_values_read = scanf("%d€ %d%% %dT", &capital, &interest_rate, &num_days);
Wenn
num_values
da nicht 3 ist, hat das Format nicht gepasst. Wenn du feiner prüfen willst, was genau nicht gepasst hat, kannst du den Ausdruck feiner zerlegen jeden einzelnen Teil auf Erfolg prüfen. (Und natürlich matcht' '
jede Art von Whitespace. Wenn du unbedingt nur Leerzeichen willst, bekommt das ein Eingabeüberprüfungsenthusiast wie du auch sicher selber hin, den Formatstring entsprechend zu ändern).PS: Prüfen an sich, ob scanf erfolgreich alle erwarteten Werte lesen konnte, sollte man natürlich immer überall machen! Das machst du derzeit gar nicht und das ist schlecht!
PPS: Da das
T
hier im Format nach dem letzten Formattoken kommt, reicht das Prüfen, ob die Anzahl der gelesenen Werte passt, hier nicht aus. Denn wenn jemand was anderes alsT
schreibt, dann wurden zuvor ja schon 3 Werte erfolgreich gelesen. Man müsste also auch nochferror(stdin)
prüfen, ansonsten wundert man sich bei der nächsten Eingabeoperation, warum diese fehlschlägt, auch wenn das Format passt.PPPS: Auch wenn manche - vor allem sehr alte - Codebeispiele einen anderen Eindruck erwecken können: Programmieren ist kein Wettbewerb darin, die kürzesten und unverständlichsten Abkürzungen für Namen zu finden. Das solltest du dir schleunigst abgewöhnen.
-
@ironB : Ein Dankeschön für SeppJ Mühen wäre angemessen.