Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <math.h>
- #define SL 256
- #define COEFF "coefficienti.txt"
- #define N 100000 //numero suddivisioni intervallo
- int main()
- {
- int i=0, j;
- float a, b, x1, x2, y1, y2, c, area;
- char s[SL];
- FILE *pf;
- printf("Ciao! Inserisci in un file i coefficienti (uno per riga!) di un polinomio di grado n partendo dal termine noto fino al coefficiente di x^n. Dopodiché salva il file (nella stessa cartella in cui si trova questo programma) con il nome coefficienti.txt \n");
- pf=fopen(COEFF, "r");
- if(pf==NULL)
- {
- printf("non ho potuto aprire il file!");
- return EXIT_FAILURE;
- }
- while( fscanf(pf, "%s", s) == 1) //trova il grado del polinomio. fscanf restituisce 1 se legge un valore, 0 se non legge nessun valore
- i++;
- fclose(pf);
- if(i==0) // si verifica nel caso in cui il file sia vuoto
- {
- printf("il file non contiene elementi");
- return EXIT_FAILURE;
- }
- do
- {
- printf("\ninserire il primo estremo di integrazione: ");
- scanf("%s", s);
- a=atof(s);
- printf("\ninserire il secondo estremo di integrazione: ");
- scanf("%s", s);
- b=atof(s);
- }
- while(b<a);
- for(x1=a, area=0; x1<b; x1+=(b-a)/N)
- {
- x2=x1+(b-a)/N;
- pf=fopen(COEFF, "r");
- for(j=0, y1=0, y2=0; j<i; j++)
- {
- fscanf(pf, "%s", s);
- c=atof(s);
- y1+=c*pow(x1,j);
- y2+=c*pow(x2,j);
- }
- fclose(pf);
- area+=(x2-x1)*(y1+y2)/2; // la formula calcola l'area del trapezio di basi y1 e y2 e altezza x2-x1
- }
- printf("Risolto: %.3f\n", area);
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement