[C] Umrechnung von zahlensystemen

Raico

Lt. Junior Grade
Registriert
Okt. 2005
Beiträge
274
Hallo, ich hoffe erstmal das es dieses thema nich schon geab um doppelte einträge zu vermeiden. So da ich noch nich lange mit C arbeite habe ich da ein kleines Problem. Ich habe folgende aufgabenstellung bekommen:

Erstellen Sie ein Programm, das eine positive natürliche Zahl in eine unsigned int-
Variable einliest und deren letzten drei Dezimal-, Hexadezimal- und Dualstellen ausgibt.

So mir ist zwar klar das ich über den printf befehl dezimalstellen ausgeben kann und zwar umgerechnet in Hexa und oktal aber wie funzt das mit der Funktion von wegen nur die letzten drei stellen. Ich habe mir schon verschiedienste theroien überlegt aber keine davon führte zum erfolg. Ich vermute das ich einfach zu kompliziert an die sache rangehe und es ne ganz einfach möglichkeit gibt. Es wäre super wenn mir jemand weiterhelfen könnte
 
Konvertier die Zahl in einen String und gib dann die letzten drei Stellen des Strings aus.

MfG

Arnd
 
Alles klar ich weiss was du meinst nur zuerst müsste ich mal die Umrechnung in hexa hinbekommen. Das prob is ja das wenn ich die als unsigned int einlese ich die nich so einfach in hexa umwandeln kann. Klar mit printf geht das aber vorher muss ich den ja erst noch umwandeln und bearbeiten
 
Die einfachste Moglichkeit die mir einfällt um die letzten drei Stellen zu bestimmen ist den Rest einer Division durch 1000 zu berechnen.
 
Jo, diese Operation ist Modulo/mod. Die kannst du dann auch gleich für das Divisionsverfahren verwenden. Die Reste sind ja dann die Ziffern der neuen Zahl, die speicherst du in einem Array von unsigned short oder so. Alles bis Basis 10 kannst du dann direkt ausgeben, bei Ziffern ab 10(Basis 11 und höher) dann halt noch eine Konvertierung zu Buchstaben.
 
Hallo raico,

mit sprintf( lStr, "%x", intVar ) steht in lStr nachher die int Variable als hex Wert.

MfG

Arnd
 
Danke für eure Antworten jungs aber ich habe die Lösung jetzt und die is soooo simpel das ich mir echt in den a.. gekniffen habe das ich das so ne Umrechnungsmethode gemacht habe ^^. also ich sag euch mal nen Beispiel für das ausgeben der letzten drei stellen für eine Hexazahl.

void main()
{
scanf("&d", &zahl);
printf("Zahl in hexalschreibweise: %X", zahl%0x1000);
}

fertig, das selbe geht auch für oktal nur muss man den nich 0x schreiben sondern 0. Quasi ist es das was Raecgaer gesagt hat aber das es echt so simpel is hätte ich nicht gedacht
 
Zurück
Oben