Advertisement
Guest User

Untitled

a guest
Feb 24th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.10 KB | None | 0 0
  1. #include<iostream>
  2. #include<fstream>
  3. #include<vector>
  4. #include<math.h>
  5. #include<string>
  6.  
  7. using namespace std;
  8.  
  9. struct campione {double media;double sq;double eq;double ermed;double x0; double xf;double vmedia; double errv;};
  10.             //media,sq,eq,ermed sono riferite al tempo
  11. int main(){
  12. campione a;
  13. vector <campione> W;
  14. float errlungh,dato=0,somma=0,n1=0,n2=0,c=5.,ausA,ausB,ausC;
  15. vector <float>misure;
  16. int sizemisure,i;
  17. string nameinput;
  18. string outputfile1,outputfile2;
  19.     //calcoliamo errore distibuzione triangolare
  20. errlungh=0.001/sqrt(24);
  21.                              //acquisizione dati da file
  22. cout<<"Inserire il nome del file contente i dati da analizzare, con estensione"<<endl;
  23.  
  24. while (cin>>nameinput) {
  25.     if (nameinput=="quit")
  26.         break;
  27.     ifstream misure1 (nameinput.c_str());
  28.         if(!nameinput.c_str())
  29.         {cout<<"errore in lettura";
  30.         return -1;
  31.         }
  32.     while(misure1>>dato)
  33.     misure.push_back(dato);
  34.  
  35.             //analisi dati
  36.     sizemisure= misure.size();
  37.         for(i=0;i<sizemisure;i++)
  38.         somma=(somma+misure[i]);
  39.     a.media=somma/sizemisure;
  40.  
  41.         for(i=0;i<sizemisure;i++)
  42.         n1=n1+(pow((misure[i]-a.media),2));
  43.     n2=n1/sizemisure;
  44.     a.sq=sqrt(n2);
  45.  
  46.     n2=n1/(sizemisure-1);
  47.     a.eq=sqrt(n2);
  48.     a.ermed=a.eq/(sqrt(sizemisure));                    //x0 e xf sono già in metri
  49.     a.x0=0.40;
  50.     a.xf=c/10.;
  51.    
  52.     W.push_back(a);
  53.     c++;
  54.     cout<<"Inserire il nome del file contente i dati da analizzare, con estensione (quit per uscire)"<<endl;
  55. }
  56.  
  57. cout<<"Inserire il nome del file in cui si vuole salvare l'analisi dati , con estensione"<<endl;
  58. cin>>outputfile1;
  59. ofstream outh(outputfile1.c_str());
  60.     if(!outputfile1.c_str())
  61.     {cout<<"errore in fase di scrittura analisi";
  62.     return -1;
  63.     }
  64. int cont=0,dim=W.size();
  65. for(cont=0;cont<dim;cont++){           
  66.    
  67.     outh<<"  Media   "<<W[cont].media <<endl;
  68.     outh<<"  Scarto quadratico medio   "<<W[cont].sq<<endl;
  69.     outh<<"  Errore quadratico medio   "<<W[cont].eq<<endl;
  70.     outh<<"Errore della media"<<W[cont].ermed<<endl<<endl;
  71. }
  72.  
  73. cout<<"Inserire il nome del file in cui si vuole salvare il calcolo delle velocità, con estensione"<<endl;
  74. cin>>outputfile2;
  75. ofstream outz(outputfile2.c_str());
  76.     if(!outputfile2.c_str())
  77.     {cout<<"errore in fase di scrittura velocità";
  78.     return -1;
  79.     }              
  80.  
  81. for (i=0;i<W.size();i++) {  //devo fargli mettere velocità, tempi, errori velocità e errori tempi in colonna (W è il vettore e vmedia la velocità)
  82.     if (i==0) {         //media,sq,eq,ermed sono riferite al tempo
  83.     W[i].vmedia=(W[i].xf-W[i].x0)/(W[i].media);
  84.     ausA=2*pow(1/(W[i].media-W[i].x0),2)*pow(errlungh,2);
  85.     ausB=pow((-1)*(W[i].xf-W[i].x0)/pow(W[i].media,2),2)*pow(W[i].ermed,2); //poniamo  errore t=0 pari a 0(chiedere conferma Sada)
  86.     W[i].errv=sqrt(ausA+ausB);
  87.     }
  88. else {
  89.     W[i].vmedia=(W[i].xf-W[i-1].xf)/(W[i].media-W[i-1].media);
  90.     ausA=2*pow(1/(W[i].media-W[i-1].media),2)*pow(errlungh,2);
  91.     ausB=pow((-1)*(W[i].xf-W[i-1].xf)/pow((W[i].media-W[i-1].media),2),2)*pow(W[i].ermed,2);
  92.     ausC=pow((W[i].xf-W[i-1].xf)/pow((W[i].media-W[i-1].media),2),2)*pow(W[i-1].ermed,2);
  93.     W[i].errv=sqrt(ausA+ausB+ausC);
  94.     }
  95. outz<<W[i].vmedia<<"    "<<W[i].media<<"    "<<W[i].errv<<" "<<W[i].ermed<<endl;
  96. }
  97.  
  98. return 0;
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement