unsigned int zu char[]

Design Patterns, Erklärungen zu Algorithmen, Optimierung, Softwarearchitektur
Forumsregeln
Wenn das Problem mit einer Programmiersprache direkt zusammenhängt, bitte HIER posten.
DerAlbi
Establishment
Beiträge: 269
Registriert: 20.05.2011, 05:37

Re: unsigned int zu char[]

Beitrag von DerAlbi »

Ich hätte gedacht, man exerziert das mal mit jeder Deziamlstelle druch. Da müsste doch der selbe Code entstehen, nur dass man ihn mit Sprungmarken zwischendrin anspringen kann, um die großen zahlen zu umgehen.
Das ein Einfaches if/else nicht viel bringt, könnt ich nachvollziehen
Benutzeravatar
BeRsErKeR
Establishment
Beiträge: 689
Registriert: 27.04.2002, 22:01

Re: unsigned int zu char[]

Beitrag von BeRsErKeR »

Ich hab zufällig was im Netz gefunden, was scheinbar komplett ohne Multiplikation auskommt und stattdessen mehrere Subtraktionen ausführt. Ob das schneller ist, kann ich nicht abschätzen. Die Datentypen muss man entsprechend anpassen. bit scheint einfach ein BOOL zu sein und das code kann man weglassen. In dem Fall geht das nur für 4-stellige Zahlen, aber man kann das TEST-Array und den Wert von i ja anpassen.

Code: Alles auswählen

void outint( int val )
{
  uint code TEST[] = { 10, 100, 1000, 10000 };
  uchar d, i;
  bit zero;
  uint uval = val;

  if( val < 0 ){
    uval = -val;
    putchar( '-' );
  }

  zero = 1;
  i = 4;
  do{
    i--;
    for( d = '0'; uval >= TEST[i]; uval -= TEST[i] ){
      d++;
      zero = 0;
    }
    if( zero == 0 )
      putchar( d );
  }while( i );

  putchar( (uchar)uval + '0' );
}
Ohne Input kein Output.
Antworten