Zahlen zerlegen

Gast #114155
Lesenswert?

Hallo Microcomputer Freunde

ich bin ein Neueinsteiger und wollte mal fragen ob mir einer sagen kann
wie man Zahlen zerlegt und auf ein LCD Display ausgibt

 Programmablauf:

Zerlegen

Divisor=10000,Stelle=[1]
Wert[Stelle]=Zahl/Divisor
Zahl=Zahl-Divisor*Wert[Stelle]
Divisor=Divisor/10,Stelle=Stelle+1
Stelle=6 JA/Nein


das Programm soll mit C geschrieben werden


Zahl=Zahl-Divisor*Wert[Stelle]//Was macht diese Zeile

Vielen Dankl
Gast #114156
Lesenswert?

Am einfachsten ist es, wenn man sich solche Algorithmen mal
durchspielt.

Angenommen es gitl die Zahl 24000 zu zerlegen.
Zeile1: Divisor ist dann nach der ersten Zeile also 2.
Zeile2: Wert der ersten Stelle wird mit 2 festgelegt.
Zeile3: zahl wird vermindert um 20000
Zeile4: vom Divisor wird eine 0 gestrichen, also neuer divisor ist
1000

würdest Du zeile 3 weglassen, dann würdest Du beim nächsten Durchlauf
wieder 24000 durch 1000 teilen, also würdest als Wertigkeit für die
zweite Stelle nicht 4 sondern 24 bekommen.
Gast #114157
Lesenswert?

Ich habe das Problem mal wie folgt gelöst:
int wert;
unsigned char einer;
unsigned char zehner;
unsigned char hunderter...

einer = wert % 10;
wert = wert / 10;
zehner = wert % 10;
wert = wert / 10;

usw.
Gast #114158
Lesenswert?

Hi

ausgabe einer beliebigen Anzahl von Stellen (inkl.
Vornullenunterdrückung) einer long-Zahl auf $AUSGABEDEVICE als
ASCII-Zeichen:

/**
    Zahl dezimal ausgeben
    d:    auszugebende Zahl
    n:    Anzahl der Stellen (von hinten)
    v:    0=ohne Vornullenunterdrückung
*/

void xxx_printd(unsigned long d, unsigned char n, unsigned char v)
{
    unsigned char s[10];
    unsigned char m;

    //Mehr als 10 Stellen hat ein long eh nicht
    if(n>10) n=10;

    //Erstmal Array mit n Stellen erzeugen
    for(m=0;m<n;m++)
    {
        s[m]=(d%10);
        d/=10;
    }
    m=0;

    //Ausgabe
    do{
        n--;
        if((!v)||(m)||(s[n]))
        {
            xxx_putc(s[n]+0x30);
            m=1;
        }
    }while(n);
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren