Ciao a tutti, devo affrontare un esercizio riguardo questo uso dei puntatori a funzione in c. L'esercizio di partenza consiste nel definire una struttura dati per un punto cartesiano, per un triangolo, un quadrato e un pentagono. Inoltre c'era da definire una struttura(union) che potesse contenere una qualsiasi tra le 2 figure precedenti. Infine l'esercizio chiedeva una funzione perimetro() che ricesse come parametro l'union figura. Io ho definito, rispettivamente, la struttura per il punto, il triangolo, il quadrato, il pentagono come segue:
codice:
struct point{
double x;
double y;
};
codice:
struct triangolo{
struct point p1;
struct point p2;
struct point p3;
};
codice:
struct quadrato{
struct point p1;
struct point p2;
struct point p3;
struct point p4;
};
codice:
struct pentagono{
struct point p1;
struct point p2;
struct point p3;
struct point p4;
};
codice:
union figura{
struct triangolo t;
struct quadrato q;
struct pentagono p;
};
Ora è richiesto nell'esercizio avanzato quanto segue:
"Si modifichi ora quell'esercizio definendo varie funzioni che calcolano il perimetro, una per ogni tipo di figura geometrica considerata, e si aggiunga a figura un puntatore a funzione perimetro che sarà inizializzato, per ogni istanza di figura, alla funzione che calcola il perimetro nel modo appropriato per quella particolare figura. In questo modo, data una istanza di figura, sarà possibile invocare il "metodo" perimetro() senza sapere a priori di che tipo di figura si tratta."
Ecco, io ho dei problemi ad impostare l'esercizio, in particolare:
1)quella che prima era una union figura ora è una struct contenente una union e il puntatore a funzione?
2)Se sì cosa prende per parametro?
3)le funzioni per calcolare i perimetri prendono per parametro una struct triangolo, quadrato o pentagono oppure una struct figura?
Per favore aiutatemi perchè non ci levo le gambe!!
ps:nel caso non fossi stata chiara i testi degli esercizi sono qui http://margot.di.unipi.it/mediawiki/...ne_come_metodi