C++ Abfrage



  • Hi leute möchte ne CMD Abfrage machen (Bin neu im C++)

    Nun habe ich mal ein HEX "umrechner" gemacht

    int main()
    {
    cout << "Wert von 27 = " << hex << 27 <<" hexadezimal"
    << endl;

    Nun meine frage: Wie Baue ich da jetzt ne Abfrage rein? z.b
    man muss ne Zahl eintippen und kriegt dann die HEX dafür...

    mag ja net jeden einzeln da eintippen 🙂

    Vielen Dank im vorraus



  • Also Abfragen kannste mit ner Switch-Anweisung abfangen. Problem ist aber nur, dass du dir da schon zur Entwurfszeit überlegen musst, wie viele Zahlen und welche du abfangen willst...

    Eleganter wäre es, ne Zahl einzulesen, und diese mit nem Algorythmus in Hexadezimal umzurechnen. Wie die Umrechnung geht, steht sicher in Wikipedia oder Google...
    Da bist du dann eben frei, was den Zahlenbereich angeht!



  • NewtonsLaw schrieb:

    Also Abfragen kannste mit ner Switch-Anweisung abfangen. Problem ist aber nur, dass du dir da schon zur Entwurfszeit überlegen musst, wie viele Zahlen und welche du abfangen willst...

    Eleganter wäre es, ne Zahl einzulesen, und diese mit nem Algorythmus in Hexadezimal umzurechnen. Wie die Umrechnung geht, steht sicher in Wikipedia oder Google...
    Da bist du dann eben frei, was den Zahlenbereich angeht!

    ehm naja wie gesagt bin n rechter Neuling 😉 kA was algorythtmus ist ^^
    und wie würde das denn mit switch funktionieren?



  • Die Dezimalzahl 100 wird ins Hexadezimalsystem umgewandelt

    Gehe nach folgendem Verfahren vor:
    (1) Teile die Zahl mit Rest durch 16.
    (2) Der Divisionsrest ist die nächste Ziffer (von rechts nach links).
    Für Reste > 9 nimm die Buchstaben A, B, C, D, E, F
    (3) Falls der (ganzzahlige) Quotient = 0 ist, bist du fertig,
    andernfalls nimm den (ganzzahligen) Quotienten als neue Zahl
    und wiederhole ab (1).

    100 : 16 = 6 Rest: 4 --> Ziffer: 4
    6 : 16 = 0 Rest: 6 --> Ziffer: 6

    Resultat: 64

    Die Hexadezimalzahl 64 wird ins Dezimalsystem umgewandelt

    Jede Stelle der Zahl hat den Wert der entsprechenden Potenz von 16;
    die rechte Ziffer entspricht 16º=1, die zweite von rechts 16¹=16 usw.
    Nimm jede Ziffer bzw. ihren Zahlenwert (A=10, B=11, ... )
    mal mit der entsprechenden Potenz und summiere.
    Gehe am besten von rechts nach links vor:

    4: 4 · 1 = 4
    6: 6 · 16 = 96
    ———
    100



  • Was spricht denn gegen

    int main() 
    { 
    char zahl = 27;
    cout << "Wert von "<< zahl << "= " << hex << zahl <<" hexadezimal" 
    << endl;
    


  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • "Knuddlbaer"Was spricht denn gegen

    Die Ausgabe.
    Müsste es nicht mit einem int gemacht werden?

    int zahl = 27; 
    cout << "Wert von "<< zahl << "= " << hex << zahl <<" hexadezimal" 
    << endl;
    

    Sonst spricht da nix gegen.



  • char 27 ist das gleiche wie int 27 oder long 27.



  • Knuddlbaer schrieb:

    char 27 ist das gleiche wie int 27 oder long 27.

    Aber der Overload von op<< für char gibt doch ein Ascii-Zeichen und nicht die Wertigkeit des char aus oder?!



  • Das ist die Ausgabe mit char.
    http://www.rb-softarticle.com/char.jpg

    Das ist die Ausgabe mit int.
    http://www.rb-softarticle.com/int.jpg

    Ich kenne den char als Char aus C++/CLI und da ist er nur für ein Zeichen.
    Was ist da jetzt nicht Ok?
    Warum ist die Ausgabe mit char nicht wie gewünscht, wenn beide doch das selbe oder das gleiche sind?



  • Doug_HH schrieb:

    Warum ist die Ausgabe mit char nicht wie gewünscht, wenn beide doch das selbe oder das gleiche sind?

    Siehe meine Antwort 😉

    Ein char ist ein Ganzzahltyp der ein Zeichen speichern kann. Das Zeichen hat einen Wert (27) und eine Darstellung (Pfeilchen links). Der operator<< von ostream zeigt die Darstellung am Bildschirm an, und nicht die Wertigkeit.

    In C# ist char tatsächlich restriktiver. Die Zuweisung einer Zahl an ein char würde ohne explizite Umwandlung fehlschlagen.



  • In c# müsste man dafür ein byte verwenden um ein "c++ char" zu erhalten.

    byte yx = 27;

    Gedanklich war das char = 27 auf "den kleinstmöglichen Typ" verwenden ausgelegt und der Post danach sollte nichts anderes sagen als "Es muss kein int sein".

    An das verhalten vom op<< hab ich dabei nicht gedacht.


Anmelden zum Antworten