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
    Ausgabe

    Es 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.


  • Mod

    Ich würde das erst einmal ignorieren. Das Überprüfen von genauen Eingabeformaten ist nicht wirklich lehrreich. Das % und T 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 als T schreibt, dann wurden zuvor ja schon 3 Werte erfolgreich gelesen. Man müsste also auch noch ferror(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.


Anmelden zum Antworten