Per piacere aiutatemi(speriamo esce scritto tutto)

di il
1 risposte

Per piacere aiutatemi(speriamo esce scritto tutto)


#include <stdio.h> 
#include <math.h> 
#include <stdlib.h> 
#define NMAX 100 

int indata(double *,double *,double *); 

void minquad(int,double *,double *,double *,double *); 

void chiq(int,double *,double *,double *,double *); 

int leggi(double *,double *,double *); 

void stamp(int,double *,double *,double *,double *,char [80][80]); 

int main() 
{ 
  double x[NMAX],y[NMAX],s[NMAX],r[5]; 
  int n,i; 
  char nome[100],graf[80][80]; 
  //printf(\"Inserire nome del file che contiene i dati(max 8 caratteri)\\n\"); 
  //scanf(\"%s\",nome); 
n=leggi(x,y,s); 

//n=indata(x,y,s); 
 for(i=0;i<n;i++) 
    { 
     y[i]=log(y[i]); 
     s[i]=s[i]/y[i]; 
    } 
minquad(n,x,y,s,r); 
stamp(n,x,y,s,r,graf); 
return(0); 
} 

int indata(double *x,double *y,double *s) 
          { 
           int nn,i,j,k; 
           printf(\"Inserire numero rilevamenti\\n\"); 
           scanf(\"%d\",&nn); 
           printf(\"inserire i valori delle x\\n\"); 
           for(i=0;i<nn;i++) scanf(\"%lf\",&x[i]); 
           printf(\"inserire i valori delle y\\n\"); 
           for(j=0;j<nn;j++) scanf(\"%lf\",&y[j]); 
           printf(\"inserire i valori delle sigma\\n\"); 
           for(k=0;k<nn;k++) scanf(\"%lf\",&s[k]);    
           return(nn); 
          } 

void minquad(int n ,double *x,double *y,double *s,double *r) 
            { 
         int i; 
              double s1,sx,sxx,sxy,sy,d; 
              for(i=0;i<n;i++) 
       {  
         s1+=1/(s[i]*s[i]); 
                   sx+=x[i]/(s[i]*s[i]); 
         sxx+=(x[i]*x[i])/(s[i]*s[i]); 
         sxy+= x[i]*y[i]/(s[i]*s[i]); 
         sy+=y[i]/(s[i]*s[i]); 
          
                 } 
         
              d=1/((s1*sxx)-(sx*sx)); 
         r[0]=d*((sxx*sy)-(sx*sxy)); 
         r[1]=d*(-(sx*sy)+(s1*sxy));              
         r[2]=d*sxx; 
         r[3]=d*s1; 
         r[4]=-(d*sx); 
         printf(\"I valori dei parametri sono:\\n\"); 
         printf(\" A1=%lf\",r[0]); 
         printf(\" A2=%lf\",r[1]); 
         printf(\" sigmaA1=%lf\",r[2]); 
         printf(\" SigmaA2=%lf\",r[3]); 
         printf(\" Cov=%lf\",r[4]); 
              chiq(n,x,y,s,r);            
           }              

void chiq(int n ,double *x,double *y,double *s,double *r) 
           { 
        int i; 
      double chi=0;  
           for(i=0;i<n;i++) 
            chi+=((y[i]-((x[i]*r[1])-r[0]))*(y[i]-((x[i]*r[1])-r[0])))/(s[i]*s[i]); 
      printf(\" CHIQ=%lf\\n\",chi);    
      }    

int leggi(double *x,double *y,double *s) 
          { 
      FILE *p; 
           double x1,y1,s1; 
           int i; 
           //char ind[100]={\"/home/studenti/lcgc17/data/\"}; 
           i=0; 
           //strcat(ind,nome); 
           //printf(\"%s\\n\",ind); 
      printf(\"1\\n\"); 
           p=fopen(\"ciao\",\"r\"); 
           if (p==NULL) printf(\"si\"); 
           else printf(\"no\"); 
           for(i=0;i<NMAX && fscanf(p,\"%lf %lf %lf\",x1,y1,s1)!=EOF;i++) 
         { 
      x[i]=x1; 
                y[i]=y1; 
                s[i]=s1; 
         } 
              
             fclose(p); 
        return(i) ; 
     } 

void stamp(int n,double *x,double *y,double *s,double *r,char graf[80][80]) 
          { 
       int i,j,k,px,py; 
       double max,fs; 
            for(i=0;i<80;i++) for(j=0;j<0;j++) graf[i][j]=' '; 
            i=0; 
            j=0; 
            k=0; 
            for(i=0;i<80;i++) graf[i][0]='_'; 
            for(j=0;j<80;j++) graf[0][j]='|'; 
            max=x[0]; 
            for(k=0;k<n>max) max=x[i]; 
            if (max>80)fs=max/80; 
            i=0; 
            j=0; 
            k=0; 
            for(k=0;k<n;k++) 
          { 
          px=x[k]/fs; 
               py=y[k]/fs; 
               graf[80-px][py]='*'; 
               } 
            for(i=79;i=0;i--); 
          { 
       for(j=0;j<80;j++) printf(\"%c\",graf[i][j]); 
       printf(\"\\n\"); 
               } 
     } 
            
il programma dovrebbe leggere dei dati da file, calcolarne i minimi quadrati e poi stampare su grafico in un altro file la retta data dai minimi quadrati....ma....c'è qualcosa che non va...vi prego...qualcuno sa pechè??

per chi non sa cosa sono i minimi quadrati http://www.roma1.infn.it/people/ciapetti/labcalc/MinimiQuadrati.ppt

per piacere...confido in voi!



EDIT: Ho trovato su inteernet questo penso dovrebbe essere lo stesso programma senza stampa del grafico e in non so quale linguaggio....per piacere...mi autate?

1 Risposte

  • Re: Per piacere aiutatemi(speriamo esce scritto tutto)

    Ciao,

    Evidentemente non è uscito scritto tutto... a parte \"farti i compiti a casa\", che non è comunque una bella richiesta, sarebbe bene specificare quali errori e difficoltà riscontri, e postare tutto il codice necessario (il pulsante \"modifica\" sul post in alto a destra serve appunto per correggere un post che non è andato a buon fine).
Devi accedere o registrarti per scrivere nel forum
1 risposte