Questo è il codice completo, funziona senza errori (ne ho trovati un altro paio)
#include <stdlib.h>
#include <stdio.h>
int horner(float *coeff, int n, int c);
void main(){
int i, c, n;
float *coeff;
printf("Inserire il grado del polinomio: ");
scanf("%d", &n);
if(!(coeff = (float *)malloc(n*sizeof(float))))
abort();
printf("\nInserire uno ad uno i valori dei coefficienti: ");
for(i = 0; i < n; i++){
printf("\nInserire il valore del coeff %d: ", i+1);
scanf("%f", &coeff[i]);
}
printf("\nInserisci il valore di c: ");
scanf("%d",&c);
printf("%d", horner(coeff, n, c));
free(coeff);
}
int horner(float *coeff, int n, int c){
int i, horner;
horner = coeff[n];
for(i = n-1; i > 0; i--)
horner = horner * c + coeff[i];
return horner;
}
p.s. quando chiami una funzione che ha valore di ritorno, o assegni il valore ritornato ad una variabile o lo stampi.
Cioè:
horner(coeff, n, c);
printf("%d",horner);
Non ha molto senso. La prima riga è ok sintatticamente, ma nn sfrutti il valore di ritorno. Nel secondo caso vuoi farglielo stampare chiamando la funzione ma nn le passi i parametri.
Quindi o fai una cosa tipo x = horner(coeff, n, c); e poi stampi x o fai come nel codice che ti ho postato nel quale stampa direttamente


 
			
			 
					
					
					
						 Rispondi quotando
  Rispondi quotando