Witam,
muszę napisać program: Napisz dwuargumentowe funkcje liczące iloczyn, iloraz, suma oraz różnicę argumentów. W programie należy stworzyć tablicę wskaźników na funkcje i wypełniź
ją wskaźnikami na napisane funkcje w kolejności podanej przez użytkownika. Następ-
nie w pętli udostępnić użytkownikowi możliwość wyboru numeru funkcji i podania
argumentów oraz wypisać wynik funkcji wywołanej przez wskaźnik z tablicy.
Moje pytanie jest następujące:
Jak stworzyć tablicę wskaźników w C++ i jak się nią posługiwać?
Czy poniższe wskaźniki do funkcji są poprawne?
Aktualnie mój program wygląda następująco:
#include
using namespace std;
double dodawanie(double a, double b)
{
return a + b;
}
double odejmowanie(double a, double b)
{
return a + b;
}
double mnozenie(double a, double b)
{
return a * b;
}
double dzielenie(double a, double b)
{
return a/b;
}
int main()
{
double(*Psuma)(double a, double b);
double(*Proznica)(double a, double b);
double(*Piloczyn)(double a, double b);
double(*Piloraz)(double a, double b);
Psuma = dodawanie;
Proznica = odejmowanie;
Piloczyn = mnozenie;
Piloraz = dzielenie;
Nie do końca, o ile deklaracja wskaźników jest dobra to już nie jest dobra i inicjalizacja. Powinno być mniej więcej:
Psuma = &dodawanie;
Jeśli chodzi o syntaks deklaracji tablicy do funkcji to tutaj myślę, że znajdziesz pomocne przykłady: https://stackoverflow.com/questions/5093090/whats-the-syntax-for-declaring-an-array-of-function-pointers-without-using-a-se.
Dodatkowo jeśli chciałbyś mieć program fajnie napisany i zrobić wrażenie na zajęciach to możesz zainteresować się jeszcze funkcjami lambda, w tedy nie musisz w ogóle tak jak teraz pisać ich definicji tylko od razu przekazać je niejako do tablicy. W tedy nie będzie się dało ich wywołać inaczej niż poprzez wskaźnik w tablicy.
Nie bo utworzyłeś tablicę wskaźników na typ double, a nie na funkcje. Bez sprawdzenia głowy sobie uciąć nie dam, ale na podstawie tego co Ci podlinkowałem wcześniej to powinno być coś takiego: