PDA

View Full Version : Come si risolve?


fant3
06-12-2003, 15:24
Ragazzi devo fare il seguente esercizio:
1.Sviluppare una function di tipo void in C per la valutazione di un polinomio mediante il metodo di Horner
2.Scrivere la documentazione interna ed esterna della function

La 2 la so fare. Per quanto riguarda la prima mi spiegate gentilmente il metodo di Horner?
Grazie.

cionci
06-12-2003, 15:32
http://www.unitus.it/biophysics/DidatticaEn_file/Programmini_2003.doc

fant3
06-12-2003, 17:15
grazie mille x la risposta ;)

verloc
06-12-2003, 17:20
Quando ti servono cose di questo genere,nel 90% dei casi qui le trovi.

http://lib-www.lanl.gov/numerical/bookcpdf.html

fant3
06-12-2003, 17:24
ok grazie. Scusate se era semplice, ma è da pochissimo che sto usando il C e non sapevo dove cercare.

fant3
11-12-2003, 20:18
ragazzi scusate l'insistenza ma non ho capito una cosa. Io ho scritto questo:
float valutapol(float a[NUMCOEFF], float x)
{
int i;
/* Inizializzazione del risultato ad a_(ORDPOL) */
float risult;
risult=a[ORDPOL];

/* Iterazione di Horner, da a_(ORDPOL-1) fino ad a_0 */
for(i=ORDPOL-1; i>=0; i=i-1)
risult=x*risult+a[i];
return risult;
}

ma l'esercizio mi chiede di scrivere una function di tipo void...
1)se è di tipo void non avrò nessun dato di output giusto?
2)basta che sostituisco float con void ed elimino return per trasformare questa function da float a void?

downloader
12-12-2003, 15:49
Ovvio, poi aggiungi una chiamata a printf o cout per il risultato. Se invece occorre che ci sia necessariamente un ritorno (lo devi vedere tu dal testo dell'esercizio richiesto) lo puoi inserire tra i parametri come riferimento.

Se quest'ultima cosa non la capisci fammi sapere.

Ciao
:)

fant3
12-12-2003, 16:47
io l'ho fatto cosi' va bene no?
#include <stdio.h>
/* Ordine del polinomio */
#define ORDPOL 3
#define NUMCOEFF ORDPOL+1

void horner (float a[], float x, float *prisult)
{
int i;
/* Inizializzazione del risultato ad a_(ORDPOL) */
*prisult=a[ORDPOL];
/* Iterazione di Horner, da a_(ORDPOL-1) fino ad a_0 */
for(i=ORDPOL-1; i>=0; i=i-1)
{
*prisult=x*(*prisult)+a[i];
}
}



int main()
{
int i;
float xx, risult;
float xinf, xsup, passo;
float coeff[NUMCOEFF];


/* Immissione dei coefficienti, dal termine a_0 ad a_n */
for (i=0; i<=ORDPOL; i=i+1)
{
printf("Immetti il coefficiente a_%d: \n", i);
scanf("%f", &coeff[i]);
}
/* Immissione degli estremi di x e del passo di valutazione */
printf("Immetti estremo inf. di x, estremo sup. e passo :\n");
scanf("%f %f %f", &xinf, &xsup, &passo);

/* Stampa dei valori */
for (xx=xinf; xx<=xsup; xx=xx+passo)
{
horner(coeff, xx, &risult);
printf("Per x= %f il polinomio vale: %f\n", xx, risult);
}

}

downloader
12-12-2003, 17:15
Ad occhio e croce mi sembra buono... a parte che si scrive result:D :D :D

fant3
12-12-2003, 17:57
l'ho provato a funziona. Se il risultato lo voglio kiamare risult lo kiamo risult. lo potrei kiamare anke armando come dice il mio prof :sofico:

downloader
13-12-2003, 12:48
Originariamente inviato da fant3
l'ho provato a funziona.
Va bene chiamalo come vuoi... conosco altri che come te hanno problemi con le vocali... :D :D :D


Scherzo, eh? Mi fa piacere che funzioni.