Seite 1 von 1

ICH BRAUCHE DRINGEND EURE HILFEEEE!

Verfasst: Mittwoch 30. Oktober 2019, 19:01
von mxvmp
Wie schreibe ich ein Programm, welches vom User eine dreistellige Zahl einliest und die Zerlegung
der Zahl in Zehnerpotenzen aufzeigt?!


Hier ein Beispiel:
Zahl: 642
642 = 6 * 100 + 4 * 10 + 2 * 1

Re: ICH BRAUCHE DRINGEND EURE HILFEEEE!

Verfasst: Mittwoch 30. Oktober 2019, 19:08
von __deets__
Bitte in Zukunft einen aussagekraeftigeren und nicht geschriehenen Betreff waehlen.

Und was hast du schon probiert? Bitte deinen Code zeigen, und das mit den Code-Tags. Wir sind hier eher nicht so Lieferando fuer Hausaufgaben.

Als kleine Hilfestellung: die Funktion divmod ist fuer eine solche Aufgabe sehr nuetzlich.

Re: ICH BRAUCHE DRINGEND EURE HILFEEEE!

Verfasst: Mittwoch 30. Oktober 2019, 19:41
von __blackjack__
Wobei man hier auch direkt auf der Zeichenkette operieren könnte.

Re: ICH BRAUCHE DRINGEND EURE HILFEEEE!

Verfasst: Mittwoch 30. Oktober 2019, 22:42
von /me
Und dann ist es ein Einzeiler.

Re: ICH BRAUCHE DRINGEND EURE HILFEEEE!

Verfasst: Dienstag 5. November 2019, 21:06
von mxvmp
Hab alles versucht, ich check es nicht, verdammt. :\

Re: ICH BRAUCHE DRINGEND EURE HILFEEEE!

Verfasst: Dienstag 5. November 2019, 21:10
von __deets__
Was an meinem ersten Posting hast du nicht verstanden? Wo ist dein Code, in dem du "alles versucht" hast?

Re: ICH BRAUCHE DRINGEND EURE HILFEEEE!

Verfasst: Dienstag 5. November 2019, 21:28
von DasIch
Denk mal ganz weit zurück an deine Grundschulzeit, da wurde Division sicherlich als Division mit Rest eingeführt. divmod, was __deets__ schon vorher genannt hat, tut genau dies (wenn wir mal unterschiede zwischen remainder und modulo ignorieren).

Re: ICH BRAUCHE DRINGEND EURE HILFEEEE!

Verfasst: Dienstag 5. November 2019, 23:30
von __blackjack__
In der Programmiersprache Vala könnte man das so umsetzen:

Code: Alles auswählen

static void main () {
    stdout.printf ("Bitte gib eine ganze Zahl ein: ");
    var line = stdin.read_line ();
    uint64 number;
    if (uint64.try_parse (line, out number)) {
        var remaining = number;
        var factors = new List<uint> ();
        while (remaining != 0) {
            factors.prepend ((uint) (remaining % 10));
            remaining /= 10;
        }
        if (factors.length () == 0) factors.append (0);
        
        stdout.printf ("%s = ", number.to_string ());
        var exponent = factors.length ();
        foreach (var factor in factors) {
            --exponent;
            stdout.printf (
                "%s*%s",
                factor.to_string (),
                Math.pow (10, exponent).to_string ()
            );
            if (exponent != 0) stdout.printf (" + ");
        }
        stdout.printf ("\n");
    } else {
        stdout.printf ("Das war leider keine Zahl!\n");
    }
}
Testlauf:

Code: Alles auswählen

Bitte gib eine ganze Zahl ein: 4711
4711 = 4*1000 + 7*100 + 1*10 + 1*1