Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Duji-Buji

Frischling

  • »Duji-Buji« ist der Autor dieses Themas

Beiträge: 20

Wohnort: Osnabrück

  • Private Nachricht senden

1

21.04.2009, 19:46

Kleines Programm: Dezimal zu Binär zu Hexadezimal

Hi,
ich hab mal eine kleine Aufgabe :D
Ich weiß nicht ob sie leicht oder schwer ist, allerdings find ich sie sehr schwer (ich weiß, ich weiß ... ich bin noch ein kleiner dummer Anfänger :lol:).
Die Aufgabe: Eine Funktion zu schreiben, die von Dezimal in Binär, von Binär in Hexadezimal und von Heyadezimal in Dezimal (natürlich auch alles umgekehrt ;)) umrechnet.
Ich bin gerade auch noch am Tüfteln.
MfG

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

2

21.04.2009, 20:13

womit genau hast du probleme?
Wie man in dezimal umrechnet solltest du denke ich wissen... einfach die ziffer * (basis ^ stelle) (wobei du bei stelle mit 0 anfängst und von hinten nach vorne zählst)...
Wenn du es in Dezimal umrechnen kannst, kannst du von da auch einfach in andere zahlensysteme.. dabei gehst du von hinten nach vorne vor. du rechnest also immer X (dezimalzahl) div/mod basis (von system, in das du umrechnen willst) den rest, also das was bei mod rauskommt, multiplizierst du wieder mit der basis, dass ist dann eine ziffer, mit dem was bei div rauskommt machst du das gleiche wieder, bis nix mehr übrig ist (bei div)... hoffe es war halbwegs verständlich?
Edit: nochmal zum umrechnen in dezimal: du musst das natürlich mit allen stellen machen und das was jeweils rauskommt aufsummieren

Anonymous

unregistriert

3

21.04.2009, 20:22

Ganz Easy:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>

int main (void) 
{
   int i;

   printf ("dezimale Zahl angeben: ");
   scanf ("%d", &i); 
   printf ("dezimal %d in hexadezimaler Darstellung: 0x%x\n", i, i);
   printf ("dezimal %d in oktaler Darstellung      : 0%o\n", i, i);

   printf ("hexadezimale Zahl (ohne 0x) eingeben: ");
   scanf ("%x", &i); 
   printf ("hexadezimal 0x%x in dezimaler Darstellung: %d\n", i, i);
   printf ("hexadezimal 0x%x in oktaler Darstellung  : 0%o\n", i, i);

   printf ("oktale Zahl (ohne 0) eingeben: ");
   scanf ("%o", &i); 
   printf ("oktal 0%o in dezimaler Darstellung    : %d\n", i, i);
   printf ("oktal 0%o in hexadezimaler Darstellung: 0x%x\n", i, i);

   return 0;
}

Willst du es richtig "low level" muss man natürlich noch was nachlegen. Die Binär-Fassung wäre diese:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>

int main()
{
    int a, b[8];
    printf ("\nEnter a decimal value: ");
    scanf ("%d", &a);

    for (int i = 0, c = a;i<=7;i++)
    {
        b[i] = c % 2;
        c >>= 1;
    }

    printf ("\nThe value of %d is ", a);
    for(int i = 7; i >= 0; --i)
        printf ("%d", b[i]);
    printf (" in binary.\n");
}

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

4

21.04.2009, 20:28

ok, so würde es natürlich auch gehen, ich bin davon ausgegangen, weil er von einer aufgabe gesprochen hat, dass er sich die funktionen zum umrechnen selbst schreiben soll ^^
aber einfach printf zu benutzen ist elegant gelöst ^^

Duji-Buji

Frischling

  • »Duji-Buji« ist der Autor dieses Themas

Beiträge: 20

Wohnort: Osnabrück

  • Private Nachricht senden

5

21.04.2009, 20:31

Oh, ich glaub die Aufgabe war ein bischen zu leicht :lol: .
Naja, ich find schon noch irgendwelche schwereren ;)
MfG

Anonymous

unregistriert

6

21.04.2009, 20:31

printf und scanf sind meine beiden Lieblinge ;)

Duji-Buji

Frischling

  • »Duji-Buji« ist der Autor dieses Themas

Beiträge: 20

Wohnort: Osnabrück

  • Private Nachricht senden

7

22.04.2009, 16:41

Aber eine Frage hab ich da noch: wie macht man das mit Hexadezimalzahlen? Denn bei unsigned ist je nur die Ninärumrechnung :roll:

8

28.04.2009, 21:32

Geht auch std::bitset ... eh für Hex zu Dec is doch das selbe Prinzip wie bei Dec to Bin ... nur hast du jetzt nicht 2 Werte sondern 16 und anstelle von 10-15 ist halt A - F. ... is nu wirklich einfach oO

Aber hm warum nicht mal ne runde C++? :D
Für Hexa haben wir in <iomanip> std::hex, für Octal haben wir std::oct und für Decimal dann std::dec ;)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <iomanip>

int main()
{
    int i(0);
    std::cout << "dezimale Zahl angeben: ";
    std::cin >> /* std::dec >> */i;
    std::cout << "hexadezimal: " << std::hex << i << " u. oktal: " << std::oct << i << std::endl;

    std::cout << "hexadezimale Zahl angeben: ";
    std::cin >>  std::hex >> i;
    std::cout << "dezimal: " << std::dec << i << " u. oktal: " << std::oct << i << std::endl;

    std::cout << "octale Zahl angeben: ";
    std::cin >> std::oct >> i;
    std::cout << "dezimal: " << std::dec << i << " u. hexadezimal: " << std::hex << i << std::endl;
}
:P

Und für's 2er-System is halt das std::bitset sehr schön wo man auch direkten Zugriff auf die einzellnen Stellen usw. hat :)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
#include <bitset>
#include <iostream>

int main()
{
    std::bitset<10> fromNumber(98ul);
    std::bitset<10> fromString("10110");
    std::cout << fromNumber.to_string() << "\n" << fromStirng.to_ulong() << std::endl;
}
;)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Werbeanzeige