[C] Eigene Betragsfunktion

Korgo

Newbie
Registriert
Sep. 2005
Beiträge
4
Hallo,

ich gehe gerade Übungsaufgaben durch und habe dazu eine Frage.

Dieser Code ist voller Fehler und diese sollen markiert und kommentiert werden.

Ich habe schon ein paar Fehller gefunden (unterschiedliche Variablenarten, fehlendes 'break;' usw.)
Aber ich habe eine grundlegende Frage dazu.

Kann ich das in dieser Form überhaupt mit der Switch-Anweisung machen, oder muss ich das auf if-Anweisungen umschreiben?
Es können ja nur konstante Ausdrücke überprüft werden, z.B. case 'a': ...

Code:
double abswrong(double x) {
int y = 0;
switch(x) {
case x<0:
y = -x;
case x==0:
y = x;
break;
case x>0:
y = x;
};
return y;
}
 
Hi ich fürchte, das wirst du wohl in if umschreiben müssen, da du bei case immer nur eine zahl angeben kannst und keine bedingung.
 
Code:
double abs( double x)
{
  return (x<0)?-x:x;
}
Mit case kann man das so nicht lösen.

Außerdem gibt's ne abs-Funktion in der C-Bibliothek.
 
V1tzl1 schrieb:
Hi ich fürchte, das wirst du wohl in if umschreiben müssen, da du bei case immer nur eine zahl angeben kannst und keine bedingung.

Das ist nicht ganz richtig, denn der Wert, den man für case einsetzten kann, hängt von dem Variablentyp (sprich string, char usw.) ab.

Was man meines Wissens nicht mit case machen kann, ist wie im obigen Code zum Beispiel vergleiche anzustellen und dergleichen.
 
Könnte es denn nicht so klappen?
Code:
  switch (x<0.)
  {
    case (true):
    ...
    break;

    case (false):
    ....
    break;
  }
;)
 
Zurück
Oben