Fragen zu Switch
-
Hallo,
habe 1-2 Fragen zu Ansi C.Und zwar wie läuft das mit dem Case-Switch ab.
Ich kann doch Funktionen vor dem main Programm setzen, in denen Rechnungen vollzogen werden die ich später brauch.
Wie rufe ich diese Funktionen in dem Switch Case auf?
Oder gibt es eine bessere Möglichkeit?
Ich will z.B eine hexadezimalzahl eingeben, und das Programm soll mir die dezimal, oktal und dual zahl ausspucken.
-
switch-case ist eine ganz normale Steurstruktur:
switch(i) { case v1: anw1; case v2; anw2; anw3; default: anw4; }
Der Wert von i wird ermittelt und mit den Konstanten v1, v2 etc verglichen - anschließend geht's bei der case-Marke weiter, die übereingestimmt hat (oder bei "default:", wenn keine stimmt). Übrigens mußt du ans Ende der Anweisungsserie ein break; setzen, sonst werden alle nachfolgenden Marken auch abgearbeitet.
Funktionen kannst du überall im Programm (OK, fast überall - außerhalb einer anderen Funktion sind keine Anweisungen erlaubt) aufrufen, indem du ihren Namen, gefolgt von (, den zu übergebenden Parametern und ) angibst.
(aber was switch mit Funktionen zu tun hat, weiß ich auch nicht)
-
Ich will z.B eine hexadezimalzahl eingeben, und das Programm soll mir die dezimal, oktal und dual zahl ausspucken.
Soll das alles in einer Funktion passieren? Weil dann brauchst du ja eigentlich kein "switch" dann rufst du die Funktion einfach in main auf.
Und switch funktioniert in etwa so:
switch(eingabe) { case 1: { // funktion1(); break; } case 2: { // funktion2(); break; } case ...: { ... } default { // z.B. Fehler } }
-
Folgendes Proplem:
Man soll über die Tastatur höchstens 6 aufeinanderfolgende Hex Zahlen eingeben und es soll dann derren Dezimal, Okatal und Dualzahl ausgespuckt werden.Hab es mir so gedacht, dass ich vor dem main() Programm Funktionen schreibe, die dieses umrechnen und dann in der Main Funktion aufrufen.
Kann ich jetzt mit Switch nur eine Funktion aufrufen oder mehrere, aber dann wäre switch ja sinnlos? Ich will nicht, das man auswählen muss welches man haben will sondern alle 3.
Ich hörte auch das es sprintf geben soll und das da alles mit angezeigt werden kann?2.Teil eine eingebene dezimal zahl soll dual ausgespuckt werden, die rechnung ist jedes mal das ergebnis durch 2 und schauen ob rest 0 oder 1 is das is dann die dualzahl aber die divisonsreste sollen in einer liste gespeichert werden und rückwärts ausgedruckt...01
Kann mir das jemand näher erläutern
-
Altpappe schrieb:
Hab es mir so gedacht, dass ich vor dem main() Programm Funktionen schreibe, die dieses umrechnen und dann in der Main Funktion aufrufen.
Kann ich jetzt mit Switch nur eine Funktion aufrufen oder mehrere, aber dann wäre switch ja sinnlos? Ich will nicht, das man auswählen muss welches man haben will sondern alle 3.
Ich hörte auch das es sprintf geben soll und das da alles mit angezeigt werden kann?Wenn du alle drei Funktionen hintereinander aufrufen willst, benötigst du kein switch() - das brauchst du nur, wenn du eine Auswahl treffen willst.
(und mit printf()/scanf() kannst du Werte je nach Bedarf oktal/dezimal/hexadezimal ein- und ausgeben, du mußt nur die richtigen Formatkennungen angeben).
-
%d ist dezimal, richtig?
und die andern, oktal, dual?Und zum 2.Teil?
-
%o ist oktal, %X hex
dual?
-
Dual kann printf() leider nicht darstellen, also mußt du doch deine Beschreibung in einen Algorithmus sammeln
PS: Wikipedia hilft: Dualsystem
-
Ich bekomme es nicht hin von einer hex dezimal in Oktal umzuwandeln
Der sagt bei der Hex Oktal:45....
-
OMG
Altpappe schrieb:
Ich bekomme es nicht hin von einer hex dezimal
Von was?
in Oktal umzuwandeln
DerWer?
sagt
Wie?
bei der Hex
Was für'n Teil?
Oktal:45....
Also Du musst Dich schon etwas deutlicher ausdrücken bitte. Lies am besten erstmal das.