Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » C-Programm für Umwandlung von Dezimalzahl in Hexadezimalzahl » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen C-Programm für Umwandlung von Dezimalzahl in Hexadezimalzahl
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
abiturient_61
Grünschnabel


Dabei seit: 29.10.2012
Beiträge: 4

C-Programm für Umwandlung von Dezimalzahl in Hexadezimalzahl Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Leute,

ich habe ein bzw. mehrere Probleme bei der Programmierung von einem "Dezimalzahl-Hexadezimalzahl-Umwandler" in der Programmiersprache C...

Und zwar soll die Dezimalzahl im Typ unsigned long eingelesen werden... Da liegt schon mein erstes problem, habe keine erfahrung mit dem typ...



Kommen wir zum eigentlichen Programm... Also aus einer dezimalzahl erhält man eine hexadezimalzahl, indem man immer durch 16 teilt und sich die Reste aufschreibt..
Da ist mein problem: Wie kriege ich Zuteilungen für die Reste ? Sagen wir der Rest wird mit der Variable R bezeichnet... R1, R2, R3, R4 usw ???



Wie kann ich das ganze in einer Schleife darstellen?

Ich brauche ja immer die Reste, die liefert mir ja der Modulo... Sagen wir ich habe eine Zahl x und einen Rest R..

Ich habe das gefühl, dann muss in die Schleife:

{
R[i] = x mod 16;
printf(..//hier die Reste nebeneinander auflisten, quasi ziffernweise//..);
}

Nur weiß ich nicht, wie das i damit zusammenhängt und wie beispielswiese die Grenzen in der Schleife definiert werden.
Kann es sein, dass hier gar keine for oder while Schleife anwendbar ist ?


Würde mich freuen, wenn Ihr mir helfen könnt !
Gruß
05.12.2012 23:22 abiturient_61 ist offline Beiträge von abiturient_61 suchen Nehmen Sie abiturient_61 in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallöchen,

unsigned long ist eine 64 Bit Zahl.

Grundlegend solltest du dir klar machen, wie viele Hexadezimaltziffern maximal benötigt werden um eine Solche Zahl darzustellen.

Eine while-Schleife kannst Du hier prinzipiell verwenden. Die Frage ist nur wie Augenzwinkern Schlage doch mal eine geeignete Abbruchbedingung vor.

Wenn du eine Dezimalzahl in Hexadezimal umwandelst, dann hast Du schon recht, dass man dies tut, indem man die Dezimalzahl fortwährend durch 16 teilt und die Reste betrachtet. Problem ist, dass dabei dei Reihenfolge der Ziffern verkehrtherum auftauchen und Du somit nicht einfach mit printf von Links nach Rechts schreiben kannst.

Ich würde Dir ein char-Array geeigneter Größe empfehlen und dies entweder mit 0 initialisieren und Rückwärts auslesen oder Du zählst die Anzahl Zifferm, welche Du in das Array geschrieben hast (die Anzahl musst du eh irgendwo mitzählen).

VG,

Karlito
06.12.2012 02:39 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Matze84
Eroberer


Dabei seit: 14.10.2012
Beiträge: 73

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

noch ein anderer Tipp.

Denke dir mal eine nicht zu große dezimalzahl aus, und rechne sie mit stift und papier in eine Hex-Zahl um.
Damit du einfach für dich siehst, was genau passiert,

Dann kommst du evtl auch auf die Abbruchbedingung, die Karlito erwähnt hat.
Außerdem kommst du dadurch vielleicht leichter auf den Algorithmus, den du brauchst.
Lg Matze

EDIT: (obwohl dieser aufwand für eine hex zahl ja gar nicht lohnt, weil es ein formatierungszeichen (in C) dafür gibt.)
ich/wir mussten das in DUAL-Zahl umrechnen, denn dafür gibs wohl kein foramtierungszeichen...)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Matze84: 10.12.2012 08:15.

10.12.2012 07:48 Matze84 ist offline Beiträge von Matze84 suchen Nehmen Sie Matze84 in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » C-Programm für Umwandlung von Dezimalzahl in Hexadezimalzahl