2016-07-27 20 views
0

Ich versuche, Daten von einer benutzerdefinierten Funktion abzurufen, leider bin ich nicht in der Lage, dies zu tun.kann Werte von benutzerdefinierten Funktionen nicht abrufen

Zum Beispiel habe ich zwei Funktionsbenutzer definieren, die

getPosition ist: Um auf eine Benutzereingabe, die Position basiert auf einer Grafik wissen

Druckposition: Um Informationen basierend anzuzeigen auf der Position des Graphen

So zum Beispiel für meine getPosition, habe ich eine einfache, wenn else-Anweisung

char getPosition (float x, float y){ 

char position; 

if (x > 0 && y > 0) 

    position = 1; 

else if (x < 0 && y > 0) 

    position = 2; 

...... 

return position; 

Als nächstes versuche ich zu printPosition mit einem Schaltergehäuse

switch(position) 
{ 

    case '1' : cout << "==> (" << x << ", " << y << ") is above X-axis" << endl; 
       cout << "==> It is at first quadrant" << endl; 
       break; 

    case '2' : cout << "==> (" << x << ", " << y << ") is above X-axis" << endl; 
       cout << "==> It is at second quadrant" << endl; 
       break; 

    ....... 

} 

So, nachdem sie zwei vom Benutzer definiert Funktion, versuchte ich in getPosition für die Werte nennen von printPosition aus den Daten drucken

printPosition(x, y, getPosition(x,y)); 

Es produziert jedoch keine Ausgabe. Warum ist das so.

Vielen Dank im Voraus für jede Hilfe.

+0

Bitte ** [Bearbeiten] ** Ihre Frage mit einem [MCVE] oder [SSCCE (Short, Self Contained, Korrekt Beispiel)] (http: // sscce. org) – NathanOliver

+0

Es klingt, als müssten Sie lernen, wie Sie einen Debugger verwenden, um durch Ihren Code zu gehen. Mit einem guten Debugger können Sie Ihr Programm Zeile für Zeile ausführen und sehen, wo es von dem, was Sie erwarten, abweicht. Dies ist ein essentielles Werkzeug, wenn Sie programmieren wollen. Weiterführende Literatur: ** [Wie kleine Programme zu debuggen] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) ** – NathanOliver

+0

Ich würde gerne debuggen, wenn es produziert Leider ist es mir gelungen, sie so zu kompilieren, dass es mir sehr schwer fällt, herauszufinden, worum es geht. –

Antwort

4

Entweder ändern:

position = 1; 
position = 2; 
... 

An:

position = '1'; 
position = '2'; 
... 

Oder Änderung:

case '1': 
case '2': 
... 

An:

case 1: 
case 2: 
... 
+0

... weil ''1'' ist ein Zeichen und der entsprechende ASCII (oder utf8) Code ist 49, also'' 1 '! = 1' ... –

+0

Warum nicht die Funktion Return int? –

+0

@DanKorn Es ist nicht wirklich wichtig. Es könnte auch ein Enum geben, solange es den 'case's entspricht. –

0

Mit

position = '1'; 
position = '2'; 

Sie sollten auch immer eine Standard-Anweisung in der switch-Anweisung haben, da dies hilft Ihnen zu verstehen, dass keiner der Fall Anweisungen ausgeführt wurden, eine einfache Möglichkeit der Fehlersuche.

kann wie folgt implementieren:

switch(position) 
{ 
case '1': 
//whatever 
break; 
case '2': 
//whatever 
break; 
default: 
//Can have a message like: 
cout << "The value was not in any of the case statements" << endl; 
//No break needed for default statements 
} 
Verwandte Themen