Switch Anweisung Ausgabe
-
dann nimm doch mal nen taschenrechner, und schau wann der fehler auftritt...
cout<<"hex: "<<i<<";muß in die schleife und die ausgabe von a raus. natürlich sollte deine schleife auch iwann abbrechen. falls das 'abbruchszeichen' im switch getestet wird mußt 4 nach rechts

-
ja eine ausgabe hab ich nun aber in der form:
hex:1
hex:2
hex:fund nicht hex:12f
dec ist nun völlig raus
irgendwie bau ich da nen kleinen fehler ein und find ihnn nicht -.-
-
also bei mir schauts so aus
#include <iostream> using namespace::std; int main() { unsigned int a=0; char i; cout << "Eingabe (hex): "; while(cin >> i){ a <<= 4; switch(i) { case '1' ... '9' : a |= i - '0'; break; case 'A' ... 'F' : a |= i - 'A' + 10; break; case 'a' ... 'f' : a |= i - 'a' + 10; break; default : a |= i = 0; break; } cout << i; } cout << endl << "dec: " << a << endl; }und ausgeführt wirds dann mit
g++ x.cpp -o xx && echo "bAAd" | ./xx
-
mir fällt gerade auf, deine hexzahlen können keine 0 also case '0' ... '9' :
-
oh, das kommt ja durchs default...
-
mh,die Ausgabe erfolgt immer noch nicht in nur einer Zeile...ich verzweifel hier noch ):
-
Enfi schrieb:
mh,die Ausgabe erfolgt immer noch nicht in nur einer Zeile...ich verzweifel hier noch ):
willst mich ärgern

-
http://msdn.microsoft.com/en-us/library/k0t5wee3(v=vs.80).aspx
Da steht:
ANSI C requires at least 257 case labels be allowed in a switch statement.Ob 257 stimmt? logisch wäre eher 255 oder 256?
Aber ob da ein Label mehr oder weniger hilft dir nicht ->Also Enfi, da solltest die noch ein wenig Rechenfunktionen in die Quelltexte einbauen damit das Ergebnis deinen Erwartungen entspricht.
MfG f.-th.
-
Doch, die 257 scheint zu stimmen, s. z.B. http://www.bsb.me.uk/ansi-c/ansi-c-one-file (2.2.4.1 Translation limits)
Es gibt dort noch mehr "krumme" Werte: 15, 31, 127, 509, 511, ...
(wobei bis auf 509 die Werte alle "2^N - 1" entsprechen)
-
f.-th. schrieb:
Ob 257 stimmt? logisch wäre eher 255 oder 256?
Wir reden von C.
Für jedes mögliche Eingabezeichen eins macht 256, und EOF(-1) sind 257.