Ciao a tutti mi servirebbe una mano a capire il funzionamento dei puntatori a funzione.
Nello specifico vi posto un esercizio che non riesco a fare:
Si scriva una funzione C che prende i seguenti parametri:
-due int x1 e x2;
-due float y1 e y2;
-una funzione f con risultato di tipo int, un parametro x di tipo int e un parametro y di tipo float
La funzione deve calcolare la somma dei risultati di f per tutte le possibili combinazioni di valori dei due parametri x e y, quando x varia tra x1 e x2(estremi inclusi) con incrementi di 2 e y varia tra y1 e y2 (estremi inclusi) con incrementi di 1.
Il prototipo della funzione che l 'esercizio chiede penso sia questo:
int funzione(int x1,int x2, float y1, float y2, int (f *) (int x,float y));
Ecco una bozza di codice che ho provato a scrivere ma penso proprio che non abbia senso
Grazie a tutti in anticipo!
codice:
#include <stdio.h>
int somma(int a, float b);
int * funzione (int x1,int x2, float y1, float y2,int (*f)(int x, float y));
int main(void){
int a=10,b=8;
float c=5,d=8;
int risultato[1000];
for (int i=0;i<1000;i++)
risultato[i]=*funzione(a, b, c, d, somma);
printf("risultato[0]=%d",risultato[0]);
return 0;
}
int somma(int a, float b){
int result;
result=a+b;
return result;
}
int * funzione (int x1,int x2, float y1, float y2,int (*f)(int x, float y)){
int max;
if(x1>x2)max=x1;
else max=x2;
int big;
int interi[max];
int i,j,k;
int risultati[max+big];
int *bo;
if(y1>y2)big=y1;
else big=y2;
float fl[big];
for (i=0; i<=max;i++) {
for (j=0; j<=big; j++){
for(k=0;k<max+big;k++){
risultati[k]=somma(interi[i], fl[j]);
}}}
i++ ;
bo=risultati;
return bo ;
}