Taschenrechner mit Funktionspointer



  • Liebe Community,
    ich bin Student und muss in diesem Semester die Einführung in Programmierung mit c++ belegen.

    Ich sitze momentan an einer Übungsaufgabe und komme nicht auf die Lösung:

    Hier ist die Aufgabenstellung:

    Verwenden Sie in Ihrem Programm 5 verschiedene Funktionen:
    - int Multiply(int, int): liefert das Ergebnis der Multiplikation der beiden Argumente zurück.
    - int Divide(int, int): liefert das Ergebnis der Division der beiden Argumente zurück.
    - int Power(int, int): liefert das Ergebnis der Rechnung erstes hoch zweites Argument zurück.
    - int Add(int, int): liefert das Ergebnis der Addition der beiden Argumente zurück.
    - int Subtract(int, int): liefert das Ergebnis der Subtraktion der beiden Argumente zurück.
    Definieren Sie in Ihrem Programm einen Pointer zu Funktionen, mit dem Sie die oben genannten Funktionen aufrufen (siehe Pointer zu Funktionen bzw. Funktionspointer im Skript!), indem Sie je nach eingegebenem Operator eine Zuweisung machen. Der Pointer soll nur an einer
    Stelle im Code für einen Aufruf verwendet werden.

    Ich stehe gerade ein wenig auf dem Schlauch. Ich habe gerade keine Idee wie ich die Fallunterscheidung mache und den Funktionsaufruf über den Funktionspointer machen soll, ohne ihn im code nur einmal zu verwenden?

    Irgendwelche Tipps?

    #include <iostream>
    #include <cmath>
    using namespace std;
    
    int multiply(int, int);
    int divide(int, int);
    int power(int, int);
    int add(int, int);
    int substract(int, int);
    
    int main() 
    {
    	int a, b;
    	unsigned short int  op;
    	cout << "Bitte legen Sie die gewünschte Operation fest:";
    	cout << "1: Multipizieren" << endl << "2: Dividieren" << endl << "3: Potenzieren" << endl << "4: Addieren" << endl << "5: Subtrahieren";
    	cin >> op;
    	cout << "Bitte geben Sie den ersten und zweiten Operanden ein und bestätigen Sie mit Enter";
    	cin >> a;
    	cin >> b;
    
    	int(*pf097)(int, int);
    
    	switch(op){
    	case 1: 
    		multiply(a, b);
    			break;
    	case 2:
    		divide(a, b);
    			break;
    	case 3:
    		power(a, b);
    			break;
    	case 4:
    		add(a, b);
    			break;
    	case 5:
    	    substract(a, b);
    		break;
    	default:
    			cout << "Unguelige Eingabe";
    			break;
    
    	}
    
    	system("PAUSE");
    	return 0;
    }
    
    int multiply(int arg1, int arg2) //arg als Abkürzung für Argument
    {
    	return arg1*arg2;
    }
    
    int divide(int arg1, int arg2)
    {
    	return arg1 / arg2;
    }
    
    int power(int arg1, int arg2)
    {
    	return pow(arg1, arg2);
    }
    int add(int arg1, int arg2)
    {
    	return arg1 + arg2;
    }
    int substract(int arg1, int arg2)
    {
    	return arg1 - arg2;
    }
    

  • Mod

    Da wo du jetzt deine Funktionsaufrufe hast, weist du dem Funktionszeiger den Wert der entsprechenden Funktion zu. Anschließend (nach dem ganzen switch) rufst du die im Funktionszeiger gespeicherte Funktion auf -> Aufruf nur an einer Stelle.



  • Ahhh, Vielen Dank!!

    Ich habe wohl mehr in die Aufgabe hineininterpretiert, als da tatsächlich stand...


Anmelden zum Antworten