Problema legato all'inserimento di una variabile

di il
5 risposte

Problema legato all'inserimento di una variabile

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;
}

5 Risposte

  • Re: Problema legato all'inserimento di una variabile

    Non

    for(i=0;i<=dim;i++){

    ma

    for(i=0;i<dim;i++){
  • Re: Problema legato all'inserimento di una variabile

    Ho appena provato ma non cambia nulla, appena inserisco una nuova variabile iniza a stampare zeri a ripetizione Come ti riporto qui sotto ho solo aggiunto una variabile t cercando di farla stampare e sul mio terminale fa cose strane
    #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[color=#BFBF00],t;[/color]
    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-1]-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]);
         [color=#8080BF] t=90.2;[/color]
          printf("%Lf %Lf %lf \n ", xi ,fi,t);
          
          }
      }
      
    }
     
     fclose (ifp);
     fclose(ofp);
     free(x);
     free(y);
    
      return 0;
    }
    
    
  • Re: Problema legato all'inserimento di una variabile

    All'inizio manca anche una

    dim=0;
  • Re: Problema legato all'inserimento di una variabile

    Grazie mile si è risolto
  • Re: Problema legato all'inserimento di una variabile

    In C una variabile non inizializzata non parte da 0

    Se non la azzeri esplicitamente il suo valore iniziale sarà casuale e questo, ovviamente, fa crashare il resto del programma...
Devi accedere o registrarti per scrivere nel forum
5 risposte