Ciao a tutti . Ho un problema con un programmino che sto facendo per un corso all'università.
Il codice in questione funziona ma se provo ad aggiungere altre variabili al programma per implementare altri calcoli il terminale inzia a scrivere una serie di zeri per poi terminarsi .
Ho provato ad escludere diverse cose ma il risultato è sempre lo stesso , se aggiungo un ulteriore variabile e provo a farla scrivere su terminale il programma "sballa". Grazie in anticipo
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<malloc.h>
int main() {
FILE *ifp,*ofp;
int i,d,n,c,dim ;
const int MAXCHARS=100;
char inp_name[ MAXCHARS],out_name[ MAXCHARS] ;
double *x, *y;
long double fi,xi;
printf("File da aprire \n");
scanf("%s",inp_name);
ifp = fopen(inp_name,"r");
printf("File uscita \n");
scanf("%s",out_name);
ofp=fopen(out_name,"w");
if(ifp == NULL){
printf("cannot open input file \n");
exit(1);
}
while((c=getc(ifp)) != EOF){
if( c == '\n') dim++;
}
fclose(ifp);
x=(double *)malloc(dim*sizeof(double));
y=(double *)malloc(dim*sizeof(double));
ifp = fopen(inp_name,"r");
for(i=0;i<=dim;i++){
fscanf(ifp, "%lf %lf ", &x[i], &y[i]);
printf("%lf %lf \n", x[i], y[i]);
}
// interpolazione lineare dei dati
printf("Dati interpolazione \n " );
scanf(" %d" , &d);
printf (" %d \n", d);
for (i=0; i<d;i++){
xi=i*((x[dim]-x[0])/d)+x[0];
for (n=0;n<=dim;n++){
if (xi<= x[n+1] && xi>x[n]){
fi=y[n]+((xi-x[n])/(x[n+1]-x[n]))*(y[n+1]-y[n]);
printf("%Lf %Lf \n ", xi ,fi);
}
}
}
fclose (ifp);
fclose(ofp);
free(x);
free(y);
return 0;
}