Problema con codice "Formula di McLaurin"

di il
5 risposte

Problema con codice "Formula di McLaurin"

Ciao, sono un nuovo iscritto. Non riesco a capire il perché dell'errore “error: expected ';', ',' or ')' before numeric constant” quando lascio ‘ORDER’ nell'argomento della funzione exp mentre se cambio il nome della variabile ma non la inizializzo il codice viene eseguito. Inoltre al momento dell'esecuzione, dopo aver inserito il valore di 'x' il codice si blocca (Immagino ci sia un errore nella dichiarazione delle funzioni). Il codice è il seguente:

#include <stdio.h>
#define ORDER 15
unsigned potenza(unsigned, unsigned);
unsigned fattoriale(unsigned);
float exp(unsigned x, unsigned ORDER) {
   float somma=0.0;
   unsigned n;
   for (n=0;n<ORDER;n++) {
   somma+= (float) potenza(x,n)/fattoriale(n);
   }
   return somma;
}
unsigned potenza (unsigned x, unsigned n) {
   int i;
   unsigned prodotto=1;
   for (i=0; i<n; i++) {
       prodotto=prodotto*x;
   }
   return prodotto;
}
unsigned fattoriale (unsigned x) {
   unsigned prodotto=1;
   unsigned n;
   while (n>1) {
       prodotto=prodotto*n;
       n--;
   }
   return prodotto;
}
int main() {
   float x, risultato;
   printf ("Inserisci il valore di x dell'equazione e^x:\n");
   scanf  ("%f", &x);
   risultato=exp(x,ORDER);
   printf ("Il risultato di e^(%f) e': %f", x, risultato);
   return 0;
}

Grazie in anticipo.

5 Risposte

  • Re: Problema con codice "Formula di McLaurin"

    #define ORDER 15
    float exp(unsigned x, unsigned ORDER) {

    .

    dopo che il PREPROCESSORE ha fatto il suo lavoro, diventa

    float exp(unsigned x, unsigned 15) {

    e questo NON E' sintatticamente valido.

  • Re: Problema con codice "Formula di McLaurin"

    02/02/2023 - migliorabile ha scritto:


    #define ORDER 15
    float exp(unsigned x, unsigned ORDER) {

    .

    dopo che il PREPROCESSORE ha fatto il suo lavoro, diventa

    float exp(unsigned x, unsigned 15) {

    e questo NON E' sintatticamente valido.

    Grazie mille. Cambiando comunque il nome della variabile nella funzione, però, il codice non prosegue dopo l'acquisizione del valore di x, ma non riesco a trovare l'errore nel codice.

  • Re: Problema con codice "Formula di McLaurin"

    Che valore inserisci per x?

    Perchè in

    risultato=exp(x,ORDER);

    x è un float se la funzione si attende un unsigned? Controlla cosa non va …

    Hai fatto un po' di debugging? Magari inserendo qualche printf qui e lì per capire come procedono i calcoli?

  • Re: Problema con codice "Formula di McLaurin"

    Ho individuato almeno un paio di errori nel tuo codice.
    Oltre a quello che ti hanno già segnalato, relativo all'uso improprio come variabile della costante ORDER, la funzione fattoriale prevede il parametro x, ma non ne fai uso dentro la funzione.

    Inoltre sconsiglio di usare per le funzioni nomi già utilizzati dalle librerie di linguaggio, come exp che per lo standard C90 è definita come

    double exp (double x);

    potrebbe mandare in conflitto il compilatore, specie se stai utilizzando come IDE il Dev-C++.

  • Re: Problema con codice "Formula di McLaurin"

    Grazie mille a tutti. Effettivamente c'erano un po' di errori. Farò più attenzione  ; )

Devi accedere o registrarti per scrivere nel forum
5 risposte