Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Zahlensysteme

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
03.03.2009, 19:39 Uhr
~main
Gast


hallo an alle ist recht dringend wäre echt super geil wenn ihr mir schnell helfen könntet!!

bin neu hier und hoffe das ihr mir bei meinem problem helfen könnt!!
ich will ein programm schreiben, das eine zahl einließt (egal welches zahlensystem)!! dann soll das programm rausfinden in welchem zahlensystem die eingabe war dez, hex oder oct und dann in die jeweiligen anderen beiden zahlensysteme umwandeln!!
mein problem hierbei ist, dass ich nicht weiß wie ich es vergleichen soll ob eine dez, hex oder oct zahl eingegeben wurde!!

kann mir da jemand helfen??

danke schon mal im voraus!!


ps: bin nicht so fit in c++!! :-)


C++:
int zahl;

    cout<<"Bitte gebe eine zahl in irgendeinem zahlensystem ein: ";
    cin>>zahl;

    if (zahl== ????? )
    {
        cout<<dec<<zahl<<endl;
        cout<<oct<<zahl<<endl;
    }



das ist jetzt z.B. die schleife für die umwandlung von hexa in dezimal und octal!! die Fragezeichen fehlen mir also die bedingung!! hab schon alles probiert

Dieser Post wurde am 03.03.2009 um 22:31 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.03.2009, 22:31 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja du musst dem Benutzer schon auferlegen, bestimmte Sachen einzuhalten, an denen du erkennen kannst WAS für eine Zahl der Benutzer eingegeben hat, z.b


Code:
0xAA für Hex
1234 für Dez
1234o für Oktal (o = kleines Oh)
1010b für Binär (b = kleines Be)



oder sowas in der Art, oder du fragst den User einfach: "Was für ein Format: Hex (a), Dezimal (b), Oktal (c) oder Binär (d): "

Achso, ansonsten musst du natürlich den Inhalt des Benutzers als "Text" lesen, wenn du nicht weißt was der Benutzer eingibt, und dies dann parsen. Denke nicht das es da was vorgefertigtes gibt, was einem genau das macht was du haben willst (also nichts standardmäßiges)
--
class God : public ChuckNorris { };

Dieser Post wurde am 03.03.2009 um 22:32 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.03.2009, 23:35 Uhr
0xdeadbeef
Gott
(Operator)


Das Problem ist natürlich, dass eine Zahl durchaus in mehreren Zahlensystemen sinnvoll sein kann. Nimm zum Beispiel an, dass der Benutzer "10" eingibt - ist das jetzt binär, oktal, dezimal, hexadezimal, oder vielleicht noch mit einer ganz anderen Basis gemeint?

Es gibt zwei Konventionen, die sich in vielen Bereichen wiederfinden - wenn 0x vorne dransteht, etwa "0x10", ist das als hexadezimale Zahl gemeint, wenn eine 0 vorne dransteht, etwa "010", oktal. Binär wird selten eingegeben, eine Konvention dafür ist mir nicht bekannt - da hättest du also freie Hand. b10 oder so böte sich an - in jedem Fall würde ich ein Präfix vorziehen, das ist dann einfacher zu parsen.

Allerdings macht es durchaus Sinn, den Benutzer vorher nach der Basis zu fragen - ich würde sogar so weit gehen, ihn eine Zahl als Radix eingeben zu lassen und das ganze dann durch strtoul zu jagen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.03.2009, 00:33 Uhr
Hans
Library Walker
(Operator)



Zitat von 0xdeadbeef:
Es gibt zwei Konventionen, die sich in vielen Bereichen wiederfinden - wenn 0x vorne dransteht, etwa "0x10", ist das als hexadezimale Zahl gemeint, wenn eine 0 vorne dransteht, etwa "010", oktal. Binär wird selten eingegeben, eine Konvention dafür ist mir nicht bekannt

Ich bin mir gerade nicht Sicher, ob man es als Konvention bezeichnen kann, aber beim Maschienensprache-Monitor, der im Commodore C128 eingebaut ist, werden Binärzahlen mit einem führenden Prozentzeichen ausgegeben, also z.B. %1001.

Ebenso ist es bei einigen Systemen üblich, heaxdezimale Zahlen durch ein führendes Dollarzeichen zu kennzeichen, also etwa $a3fe anstatt 0xa3fe. - Dabei handelt es sich allerdings um eine Konvention.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: