PDA

View Full Version : [C] puntatore ad una funzione


LucaST79
02-05-2013, 12:15
[C] IDE : Code::Blocks (un grazie di cuore a chi mi ha suggerito di lasciare Dev-C++!!)
S.O. : Windows 7

Ciao ragazzi, eccomi di nuovo qui con una nuova richiesta d'aiuto :D
Ho il seguente esercizio da fare :

" Creare due funzioni a e b
La funzione a restituisce il valore passato come parametro aumentato di 10
La funzione b restituisce il valore passato come parametro aumentato di 15
Creare un puntatore a funzione con il nome f
Chiedere all'utente di digitare il numero 1 o 2
Se l'utente digita il numero 1 eseguire la funzione a altrimenti eseguire la funzione b richiamate dal puntatore."

Ora, io ho fatto una versione funzionante senza puntatore. Ho provato ad inserire il puntatore ma mi crasha...

int incr10 (int x){
return (x + 10);}

int incr15 (int x){
return (x +15);
}



int main(int argc, char *argv[])
{

int x,scelta;

printf ("Inserisci un valore intero per x : ");
scanf("%d",&x);

printf("Scegli se incrementare il valore x di 10 o di 15.\nDigita 1 per la prima opzione, 2 per la seconda : ");
scanf("%d",&scelta);
if (scelta == 1){
printf("%d\n",incr10(x));
}
else if (scelta == 2){
printf("%d\n",incr15(x));
}

LucaST79
02-05-2013, 13:07
penso di aver risolto...ci ho messo 3 ore ma alla fine...:)

#include <stdio.h>
#include <stdlib.h>



int incr10 (int x){
return (x + 10);}


int incr15 (int x){
return (x +15);
}



int main(int argc, char *argv[])
{

int x,scelta;
int (*f)(int x);

printf ("Inserisci un valore intero per x : ");
scanf("%d",&x);

printf("Scegli se incrementare il valore x di 10 o di 15.\nDigita 1 per la prima opzione, 2 per la seconda : ");
scanf("%d",&scelta);
if (scelta == 1){
f=incr10;
printf("%d\n",f(x));
}
else if (scelta == 2){
f=incr15;
printf("%d\n",f(x));
}
return 0;
}