Mittelalterliche Währungen umrechnen - bin ratlos :(



  • ich kenne den Creator nicht gut, aber man wird die Meldungen wohl irgendwie kopieren können.

    Array:
    int pfennig**[10]**



  • Lena1906 schrieb:

    Dabei gilt: 1 Pfund = 20 Shilling = 240 Pfennig.

    Das heißt:
    1 Pfund = 240 Pfennig
    und
    1 Shilling = 12 Pfennig

    Variablen braucht es nicht viele und vor allem keine Arrays:

    int summePfennig = 0;
    int pfund, shilling, pfennig;
    

    Dann solltest du jeweils einen Wert für die drei Einheiten einlesen. Das hast du ja schon mehr oder minder versucht:

    cout << "Pfund: ";
    cin >> pfund; 
    cout << "Shilling: ";
    cin >> shilling; 
    cout << "Pfennig: ";
    cin >> pfennig;
    

    Jetzt musst du die drei Einheiten in Pfennige umrechnen (siehe oben) und auf summePfennig addieren.

    Das ganze soll zweimal geschehen: Eine einfache for -Schleife würde sich anbieten.

    Die Summe in Pfennigen ausgeben hast du ja auch schon hinbekommen.

    Das ganze wieder in die drei Einheiten aufdröseln geht dann in etwa so:

    pfennig = summePfennig % 12;
    shilling = (summePfennig / 12) % …;
    pfund = …;
    

    PS: Und Fehlermeldungen helfen ungemein bei der Fehlerbeseitigung, lerne früh sie richtig zu lesen um Fehler schneller zu finden und zu beheben.

    PPS: Code-Tags machen es für andere erheblich leichter den Quelltext zu lesen.



  • Zu deiner Zweiten Aufgabe: Den String kannst du mit cin einlesen, oder wenn es auch Abstände gibt mit getline(cin, *Variablenname*) (Speichers in einem String).
    Danach kannst du mit *Variablenname.find("@") Das erste Zeichen suchen (find() liefert die Position des Zeichens als als Zahl. Anschliessend würde ich die Suche nach der Anzahl der jeweiligen Zahlen über eine Schleife machen. Also zb. so,
    int st = 0;
    int anzzeichen[26] //Als Zahl musst du hier natürlich die Anzahl zeichen //nehmen, die du abfragen willst
    while(st < *Variablenname.find("@")) {
    if(*Variablenname*[st] == 'a') {
    anzzeichen[0]++;}
    if(*Variablenname*[st] == 'b') {
    anzzeichen++;}
    //Und so weiter, für alle Zeichen die du abfragen musst eine if-Bedingung
    st++;
    }
    Anschliessend kannst du Alles aus anzzeichen ausgeben (In meinem Beispiel wäre anzzeichen[0] = wie oft a vorkommt, anzeichen[1] = wäre wie oft b vorkommt, usw.

    PS: Evtl. musst du zuerst alle Werte von anzzeichen = 0 setzen.



  • Vielen Dank schonmal, das werd ich alles mal ausprobieren! 🙂
    (Könnte was dauern)
    Wenn noch jemand Tipps hat, immer her damit! 😃



  • Mach alle Gedanken um Arrays weg.

    Und rechne lagalopexs Formeln mal per Hand mit ein paar Zahlen. Die stimmen, sind nur noch nicht ganz fertig.



  • bitte löschen



  • Chapeau!

    Jetzt bekommt der TE die Lösung auf dem Silbertablett und der Lerneffekt liegt irgendwo bei Null.



  • @DocShoe
    Ruhig Blut.
    Der Code buggt und macht auch nicht genau das was in der Aufgabe gefordert wurde. (Bzw. würde auch nicht das machen wenn er nicht sowieso buggy wäre.)



  • bitte löschen



  • Zwoertsch schrieb:

    ist allerdings ohne den Modulo da ich keinen grund finde den zu benutzen aber evtl hab ich die aufgabe falsch verstanden kannst sie ja ma komplett posten die Aufgabenstellung wenn dir das hier nicht helfen sollte

    Du hast ja auch nur den einfachen Teil der Aufgabe gelöst. Modulo kann man gebrauchen, wenn man einen Betrag in Pfund, Schilling und Pfennig aufteilen will.

    BTW, deine Kommataste ist anscheinend kaputt. Kannst bei mir ein paar rauskopieren, wenn du willst.


Anmelden zum Antworten