Programmieren Hilfe?

4 Antworten

Mach statt

double result = newCent20 + newCent50 + euro1 + newEuro2;

erstmal

double resultCent = newCent20 + newCent50;
double resultEuro = euro1 + newEuro2;

das du das schonmal getrennt hast voneinander ...

Bei resultEuro musst du dann nur noch gucken, wie viel Euro du aus den Cent bekommst, und diese mit einrechnen und von den Cent wieder abziehen

Woher ich das weiß:eigene Erfahrung
NackterGerd  08.09.2022, 00:39

Wieso so umständlich.

Man rechnet doch normalerweise einfach alles zusammen. Und Erhält Euro und Cent

1
MrCuukie  08.09.2022, 00:43
@NackterGerd

Es wäre natürlich noch einfacher einfach die Euro in Cent umzuwandeln und dann einfach geteilt durch 100 zu machen ...

Aber dann würde er ja "31,5" rausbekommen in seinem Beispiel und nicht "31 Euro und 50 Cent"

1
Erzesel  08.09.2022, 04:39
@MrCuukie

Noch einfacher ... mit Cent rechnen und erst am 'Ende ein Modulo und IntegerDivision...

0

Kinders, ihr stellt Euch aber alle an...

          //es gibt nur  "Ganze" Münzen ,  also Integer
        Console.Write("Wie viele Zwanzigerl:    ");
        int cent20 = Convert.ToInt32(Console.ReadLine());
        Console.Write("Wie viel Fünzigerl:  ");
        int cent50 = Convert.ToInt32(Console.ReadLine());
        Console.Write("Wie viele Eurostücle:    ");
        int euro1 = Convert.ToInt32(Console.ReadLine());
        Console.Write("Wie viel ZweiEuroStücke:     ");
        int euro2 = Convert.ToInt32(Console.ReadLine());


          // auch beim Zusammenrechnen  belassen wir es bei Cent das spart viel Ärger mit falschen Rundungen
          // und  macht  Konvertierungen überflüssig
        int sumCent20 = cent20 *  20;
        int sumCent50 = cent50 *  50;
        int sumEuro1  = euro1  * 100;
        int sumEuro2  = euro2  * 200;
        int sumCents = sumCent20 + sumCent50 + sumEuro1 + sumEuro2;


        int Cents = sumCents % 100;  //ganz einfache IntegerMathematik  Modulo und Division
        int Euros = sumCents / 100;


        Console.WriteLine($"gesammt :{sumCents} cent");   
        Console.WriteLine($"{Euros} Euro und {Cents:D2} cent"); //formatiere zur  Sicherheit die Cents  auf 2 Stellen, in der Sparbüchse landen  auch  noch  kleine  Münzen....
        Console.ReadKey();

Einfach die Cents zusammenzählen.

Die Euros sind Alles geteilt durch 100 (da wir mit integer Rechnen fällt alles was kleiner 100 ist weg)

Das "Gegenstück" ist Modulo 100 (alles was >99 ist fällt weg) . was bleibt ist der Rest , die Cent.

Du meist wohl restlichen Cent nach dem Komma oder? Weil 1€ sind 100 Cent bzw. 120 Cent wären 1,20€.

Wenn du die insgesamten Cents ausrechnen willst: entweder Euros vorher konvertieren (*100) oder result (*100).

---

Falls du den Rest ausgeben willst gibts da verschiedene Herangehensweisen.

Simpleste wäre wohl einfach (*100) zu rechnen aber nur den die letzten zwei Zahlen auszugeben oder wenn du die Zahl weiter verwenden willst, (*100) und dann in Integer umwandeln, dann mit Modulo arbeiten. (%100) [gibt quasi den Rest einer 100-Teilung oder Vielfaches aus]. Also 245 % 100 wären 45.

Gibt auch Methoden die direkt das mit double machen können. fmod() in Java z.B.

----

Gibt viele Ansätze, die mehr oder weniger schön sind. Theoretisch kannst du auch result in String umformen und damit dann arbeiten. Musst halt kreativ werden. Dafür sind ja so Aufgaben da um einfach mal was auszuprobieren.

Warum rechnest du nicht alles in Euro um?

Den Anteil vor dem Komma erhältst du mit der Methode

Math.floor()

und den Nachkommaanteil, in dem du dieses Ergebnis vom Betrag abziehst. (In Cent umrechnen: natürlich mit 100 multiplizieren.)

-----

Warnung: diese Methode ist nicht 100%ig sicher - es kann zu Rundungsfehlern kommen, sodass z. B. ausgegeben wird

Dein Sparschwein enthält 26 Euro und 100 Cent

Deshalb wäre es sicherer, alles in Cent umzurechnen. Wie man hier auf den Euro-Anteil kommt, sei dem Leser zur Übung überlassen.

Erzesel  08.09.2022, 04:34

Warum rechnest du nicht alles in Cent um? ...dann must Du keine Rundungsfehler fürchten.

2
PWolff  08.09.2022, 10:03
@Erzesel

Nicht bei bloßen Additionen/Subtraktionen, das stimmt. Aber z. B. bei der Berechnung von MwSt. gibt es keine korrekte Möglichkeit, die nicht auf Rundungsfehler vorbereitet ist.

1