Advertisement
Guest User

Untitled

a guest
May 16th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 11.47 KB | None | 0 0
  1. #include<iostream>
  2. #include<stdlib.h>
  3. #include<cmath>
  4. #include <bits/stdc++.h>
  5. #include <fstream>
  6. using namespace std;
  7.  
  8. void filter(float f_finalz[320]);
  9. void qt(float ffinal[320]);
  10. int menu();
  11.  
  12. int main(){
  13.     float x=1,result;
  14.     float arr[320],f_final[320];
  15.     int an=0;
  16.     string infile[320];
  17.     short cnt=0;
  18.     int choice=0;
  19.     int lll=0;
  20.  
  21. //1
  22.  
  23.         int num=1;
  24.         float num2=1;
  25.     //generate all fx values
  26.     for( int i=0;i<320;i++){
  27.         result=1/cos(x)+log10(x);
  28.         arr[i]=result;
  29.         x+=0.5;
  30.     }
  31.     do{
  32.     choice=0;
  33.     choice=menu();
  34.  
  35.  
  36.  
  37.     if(choice==1){
  38.     //unfiltered
  39.     int loop=0;
  40.     cout<<"Equation: f(x)= sec(x) + log10(x)\n";
  41.     cout<<"Range of x: 1<= x <=160.5\n";
  42.     cout<<"Step of x: 0.5\n";
  43.     loop=0;
  44.     float a=0,b=0;
  45.     char ch;
  46.     int y=0;
  47.     do{
  48.     cout<<"Insert value for x in the range between 1~160.5\n";
  49.     cin>>a>>b;
  50.     if(a>=1 && a<=160.5 && b>=1 && b<=160.5 && a<=b){
  51.         cout<<"Your range is as below:\n"<<a<<"<=x<="<<b<<"\n\n";
  52.         cout<<"Do you accept to continue with this function?(y/n)\n";
  53.         cin>>ch;
  54.         if(ch=='y'){//1=0,2=2,2.5=3,6=10
  55.             while(a<=b){
  56.                 y=(a-1)*2;
  57.                 cout<<"f("<<a<<") \t=\t"<<arr[y]<<endl;
  58.                 a+=0.5;
  59.             }loop++;
  60.  
  61.  
  62.             }
  63.         else if(ch=='n'){
  64.             loop++;
  65.             }
  66.             else(
  67.             cout<<"You have entered invalid option\n");
  68. }
  69.     else(
  70.         cout<<"You have entered invalid value\n");
  71.             system("pause");
  72.             system ("CLS");
  73. }while(loop<1);
  74. }
  75. //2
  76.     //copy into f_final
  77.     for(int i=0;i<320;i++)
  78.     f_final[i]=arr[i];
  79.  
  80.  
  81.     //filter function
  82.     filter(f_final);
  83.  
  84.  
  85.  
  86. //3
  87.     if(choice==2){
  88.  
  89. // 3.1 saving into file f_final tbf
  90.     ofstream myfile;
  91.  
  92.      myfile.open("f_final1.txt");
  93.  
  94.      if(myfile.is_open()){
  95.         for(int i =0;i<320;i++)
  96.         myfile <<f_final[i]<<endl;
  97.      myfile.close();
  98.     }
  99.     else
  100.     cout<<"The file cannot be open";
  101.  
  102.     cnt=0;
  103.  // 3.2 reading filtered value
  104.     string line;
  105.     ifstream readFile ("f_final1.txt");
  106.     if (readFile.is_open()){
  107.         while ( getline (readFile, line ).good () ){
  108.             infile[cnt]=line;
  109.             //cout << infile[cnt] << endl;
  110.             cnt++;
  111.  
  112.         }
  113.  
  114.         readFile.close();
  115.     }else {cout << "Unable to open file";}
  116.  
  117.  
  118.     int loopp=0;
  119.  
  120.     char chh;
  121.     loopp=0;
  122.     float aa,bb;
  123.     int yy=0;
  124.     do{
  125.     cout<<"Insert new value for x in the range between 1~160.5\n";
  126.     cin>>aa>>bb;
  127.     if(aa>=1 && aa<=160.5 && bb>=1 && bb<=160.5 && aa<=bb){
  128.         cout<<"Your range is as below:\n"<<aa<<"<=x<="<<bb<<"\n\n";
  129.         cout<<"Do you accept to continue with this function?(y/n)\n";
  130.         cin>>chh;
  131.         if(chh=='y'){//1=0,2=2,2.5=3,6=10
  132.             while(aa<=bb){
  133.                 yy=(aa-1)*2;
  134.                 cout<<"f("<<aa<<") \t\t=\t"<<infile[yy]<<endl;
  135.                 aa+=0.5;
  136.             }
  137.             loopp++;
  138.  
  139.             }
  140.         else if(chh=='n'){
  141.             loopp++;
  142.             }
  143.             else(
  144.             cout<<"You have entered invalid option\n");
  145. }
  146.     else(
  147.         cout<<"You have entered invalid value\n");
  148.             system("pause");
  149.             system ("CLS");
  150. }while(loopp<1);
  151. }
  152.  
  153.  
  154.  
  155. //4
  156.     if(choice==3){
  157.     qt(f_final);
  158. }
  159.     if(choice==4){
  160.         cout<<"Thank you for using my service :)"<<endl;
  161.  
  162.         lll++;
  163.     }
  164.     }while(lll<1);
  165.  
  166.     return 0;
  167. }
  168.  
  169. void filter(float f_finalz[320]){
  170.  
  171.  
  172. //      =filter1 standard deviation of last 100
  173.     float sd=0,sda=0,sum=0,sdb=0,xi[100],fff[320];
  174.  
  175. //  for(int i=0;i<320;i++)
  176. //  fff[i]=f_final[i];
  177.  
  178. //calculate mean
  179.     for(int kl=219;kl<320;kl++){
  180.         sda=sda+f_finalz[kl];
  181.     }
  182. sda=sda/100;
  183.  
  184.     /*  xi[222]=(f_final[222]-sda)*(f_final[222]-sda);
  185.         sum+=xi[222];
  186.         cout<<"\t"<<sum<<endl;
  187.         system("pause");
  188. */
  189.  
  190.     //calculate xi
  191.     for(int kl=219;kl<320;kl++){
  192.         xi[kl]=(f_finalz[kl]-sda)*(f_finalz[kl]-sda);
  193.         sum+=xi[kl];
  194.  
  195.     }
  196.  
  197.     sdb=sum/99;
  198.     sd=sqrt(sdb);
  199.  
  200. //  cout<<"sd="<<sd<<endl;
  201.  
  202. // 2.1
  203.     for(int i=0;i<320;i++)
  204.         f_finalz[i]-=sd;
  205.  
  206. //      =filter2 average of first 100
  207.  
  208. float ave=0;
  209. // finding average of first 100
  210.     for(int kl=0;kl<100;kl++){
  211.         ave=ave+f_finalz[kl];
  212.         ave/=100;
  213.     }
  214. //  cout<<"ave="<<ave<<endl;
  215.  
  216. // 2.2
  217.     for(int i=0;i<320;i++)
  218.         f_finalz[i]=f_finalz[i]+ave;
  219.  
  220. //      =filter3 lowest of first50 and last50
  221.  
  222. float fnl50[100],minn=10000;
  223. //combining first and last 50
  224.     for(int i=0;i<50;i++)
  225.     fnl50[i]=f_finalz[i];
  226.  
  227.     for(int i=270;i<320;i++)
  228.     fnl50[i-220]=f_finalz[i];
  229.  
  230. //finding lowest 100
  231.     for(int i=0;i<100;i++){
  232.         if(fnl50[i]<minn){
  233.         minn=fnl50[i];
  234.     }}
  235.  
  236.  
  237.  
  238. //2.3
  239.     for(int i=0;i<320;i++)
  240.     f_finalz[i]-=minn;
  241.  
  242. //  for(int i=0;i<320;i++)
  243. //  cout<<i+1<<".\t"<<f_finalz[i]<<endl;
  244. }
  245.  
  246. void qt(float ffinal[320]){
  247.     float ff[320],mmin=10000,mmax=-10000;
  248.     struct quantile{
  249.         float qave,qsd,qmin,qmax,range,qn,qsum,qxsum,qcnt;
  250.     };
  251.  
  252.  
  253.     system("cls");
  254.  
  255.     //find min
  256.     for(int i=0;i<320;i++){
  257.         if(ffinal[i]<mmin){
  258.             mmin=ffinal[i];
  259.         }
  260.     }
  261.     cout<<"min= "<<mmin<<endl;
  262.  
  263.     //find max
  264.     for(int i=0;i<320;i++){
  265.         if(ffinal[i]>mmax){
  266.             mmax=ffinal[i];
  267.         }
  268.     }
  269.     cout<<"max= "<<mmax<<endl;
  270.  
  271.     //find qwidth
  272.     float qwidth=0;
  273.     qwidth=(mmax-mmin)/5;
  274.     cout<<"qwidth= "<<qwidth<<endl;
  275.  
  276.     float x1,y1,x2,y2,x3,y3,x4,y4,x5,y5;
  277.     //range 1
  278.     x1=mmin , y1=mmin+qwidth;
  279.  
  280.     //range 2
  281.     x2=y1 , y2=y1+qwidth;
  282.  
  283.     //range 3
  284.     x3=y2 , y3=y2+qwidth;
  285.  
  286.     //range 4
  287.     x4=y3 , y4=y3+qwidth;
  288.  
  289.     //range 5
  290.     x5=y4 , y5=y4+qwidth;
  291.  
  292.     struct quantile qt[10];
  293.     qt[0].qave=0;
  294.     qt[0].qsd=0;
  295.     qt[0].qmin=10000;
  296.     qt[1].qmin=10000;
  297.     qt[2].qmin=10000;
  298.     qt[3].qmin=10000;
  299.     qt[4].qmin=10000;
  300.     qt[0].qmax=-10000;
  301.     qt[1].qmax=-10000;
  302.     qt[2].qmax=-10000;
  303.     qt[3].qmax=-10000;
  304.     qt[4].qmax=-10000;
  305.     qt[0].qn=0;
  306.     qt[0].qsum=0;
  307.     qt[0].qxsum=0;
  308.     qt[0].qcnt=0;
  309.     qt[1].qcnt=0;
  310.     qt[2].qcnt=0;
  311.     qt[3].qcnt=0;
  312.     qt[4].qcnt=0;
  313. system("cls");
  314.  
  315. //q1
  316.     cout<<"Range of quantile 1 : "<<x1<<" <= q1 <= "<<y1<<endl;
  317.  
  318.     for(int i=0;i<320;i++){
  319.         if(ffinal[i]>=x1 && ffinal[i]<=y1){
  320.             qt[0].qcnt++;
  321.             //cout<<qt[0].qcnt<<endl;
  322.         }
  323.     }
  324.  
  325.     if(qt[0].qcnt!=0){
  326.     //finding average
  327.     for(int i=0;i<320;i++){
  328.         if(ffinal[i]>=x1 && ffinal[i]<=y1){
  329.             qt[0].qsum+=ffinal[i];
  330.  
  331.         }
  332.     }
  333.     qt[0].qave=qt[0].qsum/qt[0].qcnt;
  334.  
  335.     //finding min & max
  336.     for(int i=0;i<320;i++){
  337.         if(ffinal[i]>=x1 && ffinal[i]<=y1){
  338.             if(ffinal[i]<qt[0].qmin){
  339.                 qt[0].qmin=ffinal[i];
  340.             }
  341.             if(ffinal[i]>qt[0].qmax){
  342.                 qt[0].qmax=ffinal[i];
  343.             }
  344.         }
  345.     }
  346.  
  347.     //finding standard deviation
  348.     for(int i=0;i<320;i++){
  349.         if(ffinal[i]>=x1 && ffinal[i]<=y1){
  350.             qt[0].qxsum+=((ffinal[i]-qt[0].qave)*(ffinal[i]-qt[0].qave));
  351.         }
  352.     }
  353.     qt[0].qxsum/=(qt[0].qcnt-1);
  354.     qt[0].qsd=sqrt(qt[0].qxsum);
  355. }
  356.     else{
  357.  
  358.         qt[0].qave=0;
  359.         qt[0].qsd=0;
  360.         qt[0].qmin=0;
  361.         qt[0].qmax=0;
  362.     }
  363.  
  364.     cout<<qt[0].qcnt<<" value found"<<endl<<endl;
  365.     cout<<"average = "<<qt[0].qave<<endl;
  366.     cout<<"standard deviation = "<<qt[0].qsd<<endl;
  367.     cout<<"minimum = "<<qt[0].qmin<<endl;
  368.     cout<<"maximum = "<<qt[0].qmax<<endl;
  369.  
  370.  
  371.     system("pause");
  372.     system("cls");
  373.  
  374. //q2
  375.     cout<<"Range  of quantile 2 : "<<x2<<" <= q2 <= "<<y2<<endl;
  376.  
  377.     for(int i=0;i<320;i++){
  378.         if(ffinal[i]>=x2 && ffinal[i]<=y2){
  379.             qt[1].qcnt++;
  380.         }
  381.     }
  382.  
  383.     if(qt[1].qcnt!=0){
  384.  
  385.     //finding average
  386.     for(int i=0;i<320;i++){
  387.         if(ffinal[i]>=x2 && ffinal[i]<=y2){
  388.             qt[1].qsum+=ffinal[i];
  389.  
  390.         }
  391.     }
  392.     qt[1].qave=qt[1].qsum/qt[1].qcnt;
  393.  
  394.     //finding min & max
  395.     for(int i=0;i<320;i++){
  396.         if(ffinal[i]>=x2 && ffinal[i]<=y2){
  397.             if(ffinal[i]<qt[1].qmin){
  398.                 qt[1].qmin=ffinal[i];
  399.             }
  400.             if(ffinal[i]>qt[1].qmax){
  401.                 qt[1].qmax=ffinal[i];
  402.             }
  403.         }
  404.     }
  405.  
  406.     //finding standard deviation
  407.     for(int i=0;i<320;i++){
  408.         if(ffinal[i]>=x2 && ffinal[i]<=y2){
  409.             qt[1].qxsum+=((ffinal[i]-qt[1].qave)*(ffinal[i]-qt[1].qave));
  410.         }
  411.     }
  412.     qt[1].qxsum/=(qt[1].qcnt-1);
  413.     qt[1].qsd=sqrt(qt[1].qxsum);
  414. }
  415.     else{
  416.  
  417.         qt[1].qave=0;
  418.         qt[1].qsd=0;
  419.         qt[1].qmin=0;
  420.         qt[1].qmax=0;
  421.     }
  422.  
  423.     cout<<qt[1].qcnt<<" value found"<<endl<<endl;
  424.     cout<<"average = "<<qt[1].qave<<endl;
  425.     cout<<"standard deviation = "<<qt[1].qsd<<endl;
  426.     cout<<"minimum = "<<qt[1].qmin<<endl;
  427.     cout<<"maximum = "<<qt[1].qmax<<endl;
  428.  
  429.     system("pause");
  430.     system("cls");
  431.  
  432.  
  433. //q3
  434.     cout<<"Range of quantile 3 : "<<x3<<" <= q3 <= "<<y3<<endl;
  435.  
  436.     for(int i=0;i<320;i++){
  437.         if(ffinal[i]>=x3 && ffinal[i]<=y3){
  438.             qt[2].qcnt++;
  439.         }
  440.     }
  441.  
  442.     if(qt[2].qcnt!=0){
  443.  
  444.     //finding average
  445.     for(int i=0;i<320;i++){
  446.         if(ffinal[i]>=x3 && ffinal[i]<=y3){
  447.             qt[2].qsum+=ffinal[i];
  448.  
  449.         }
  450.     }
  451.     qt[2].qave=qt[2].qsum/qt[2].qcnt;
  452.  
  453.     //finding min & max
  454.     for(int i=0;i<320;i++){
  455.         if(ffinal[i]>=x3 && ffinal[i]<=y3){
  456.             if(ffinal[i]<qt[2].qmin){
  457.                 qt[2].qmin=ffinal[i];
  458.             }
  459.             if(ffinal[i]>qt[2].qmax){
  460.                 qt[2].qmax=ffinal[i];
  461.             }
  462.         }
  463.     }
  464.  
  465.     //finding standard deviation
  466.     for(int i=0;i<320;i++){
  467.         if(ffinal[i]>=x3 && ffinal[i]<=y3){
  468.             qt[2].qxsum+=((ffinal[i]-qt[2].qave)*(ffinal[i]-qt[2].qave));
  469.         }
  470.     }
  471.     qt[2].qxsum/=(qt[2].qcnt-1);
  472.     qt[2].qsd=sqrt(qt[2].qxsum);
  473. }
  474.     else{
  475.  
  476.         qt[2].qave=0;
  477.         qt[2].qsd=0;
  478.         qt[2].qmin=0;
  479.         qt[2].qmax=0;
  480.     }
  481.  
  482.     cout<<qt[2].qcnt<<" value found"<<endl<<endl;
  483.     cout<<"average = "<<qt[2].qave<<endl;
  484.     cout<<"standard deviation = "<<qt[2].qsd<<endl;
  485.     cout<<"minimum = "<<qt[2].qmin<<endl;
  486.     cout<<"maximum = "<<qt[2].qmax<<endl;
  487.  
  488.     system("pause");
  489.     system("cls");
  490.  
  491.  
  492.  
  493. //q4
  494.     cout<<"Range of quantile 4 : "<<x4<<" <= q4 <= "<<y4<<endl;
  495.  
  496.     for(int i=0;i<320;i++){
  497.         if(ffinal[i]>=x4 && ffinal[i]<=y4){
  498.             qt[3].qcnt++;
  499.         }
  500.     }
  501.  
  502.     if(qt[3].qcnt!=0){
  503.     //finding average
  504.     for(int i=0;i<320;i++){
  505.         if(ffinal[i]>=x4 && ffinal[i]<=y4){
  506.             qt[3].qsum+=ffinal[i];
  507.  
  508.         }
  509.     }
  510.     qt[3].qave=qt[3].qsum/qt[3].qcnt;
  511.  
  512.     //finding min & max
  513.     for(int i=0;i<320;i++){
  514.         if(ffinal[i]>=x4 && ffinal[i]<=y4){
  515.             if(ffinal[i]<qt[3].qmin){
  516.                 qt[3].qmin=ffinal[i];
  517.             }
  518.             if(ffinal[i]>qt[3].qmax){
  519.                 qt[3].qmax=ffinal[i];
  520.             }
  521.         }
  522.  
  523.     }
  524.  
  525.  
  526.     //finding standard deviation
  527.     for(int i=0;i<320;i++){
  528.         if(ffinal[i]>=x4 && ffinal[i]<=y4){
  529.             qt[3].qxsum+=((ffinal[i]-qt[3].qave)*(ffinal[i]-qt[3].qave));
  530.         }
  531.     }
  532.     qt[3].qxsum/=(qt[3].qcnt-1);
  533.     qt[3].qsd=sqrt(qt[3].qxsum);
  534. }
  535.     else{
  536.  
  537.         qt[3].qave=0;
  538.         qt[3].qsd=0;
  539.         qt[3].qmin=0;
  540.         qt[3].qmax=0;
  541.     }
  542.  
  543.     cout<<qt[3].qcnt<<" value found"<<endl<<endl;
  544.     cout<<"average = "<<qt[3].qave<<endl;
  545.     cout<<"standard deviation = "<<qt[3].qsd<<endl;
  546.     cout<<"minimum = "<<qt[3].qmin<<endl;
  547.     cout<<"maximum = "<<qt[3].qmax<<endl;
  548.  
  549.     system("pause");
  550.     system("cls");
  551.  
  552.  
  553.  
  554. //q5
  555.     cout<<"Range of quantile 5 : "<<x5<<" <= q5 <= "<<y5<<endl;
  556.  
  557.     for(int i=0;i<320;i++){
  558.         if(ffinal[i]>=x5 && ffinal[i]<=y5){
  559.             qt[4].qcnt++;
  560.         }
  561.     }
  562.  
  563.     if(qt[4].qcnt!=0){
  564.  
  565.     //finding average
  566.     for(int i=0;i<320;i++){
  567.         if(ffinal[i]>=x5 && ffinal[i]<=y5){
  568.             qt[4].qsum+=ffinal[i];
  569.  
  570.         }
  571.     }
  572.     qt[4].qave=qt[4].qsum/qt[4].qcnt;
  573.  
  574.     //finding min & max
  575.     for(int i=0;i<320;i++){
  576.         if(ffinal[i]>=x5 && ffinal[i]<=y5){
  577.             if(ffinal[i]<qt[4].qmin){
  578.                 qt[4].qmin=ffinal[i];
  579.             }
  580.             if(ffinal[i]>qt[4].qmax){
  581.                 qt[4].qmax=ffinal[i];
  582.             }
  583.         }
  584.     }
  585.  
  586.     //finding standard deviation
  587.     for(int i=0;i<320;i++){
  588.         if(ffinal[i]>=x5 && ffinal[i]<=y5){
  589.             qt[4].qxsum+=((ffinal[i]-qt[4].qave)*(ffinal[i]-qt[4].qave));
  590.         }
  591.     }
  592.     qt[4].qxsum/=(qt[4].qcnt-1);
  593.     qt[4].qsd=sqrt(qt[4].qxsum);
  594. }
  595.     else{
  596.  
  597.         qt[4].qave=0;
  598.         qt[4].qsd=0;
  599.         qt[4].qmin=0;
  600.         qt[4].qmax=0;
  601.     }
  602.  
  603.     cout<<qt[4].qcnt<<" value found"<<endl<<endl;
  604.     cout<<"average = "<<qt[4].qave<<endl;
  605.     cout<<"standard deviation = "<<qt[4].qsd<<endl;
  606.     cout<<"minimum = "<<qt[4].qmin<<endl;
  607.     cout<<"maximum = "<<qt[4].qmax<<endl;
  608.  
  609.     system("pause");
  610.     system("cls");
  611. }
  612.  
  613. int menu(){
  614.     int pick,ll;
  615.     do{
  616.         ll=0,pick =0;
  617.         cout<<"Choose an option :\n\n1.\tView unfiltered fx value\n2.\tView filtered fx value\n3.\tView in each quantile\n4.\tExit\n";
  618.         cin>>pick;
  619.         if(pick>=1 && pick<=4){
  620.         ll++;}
  621.         else{
  622.             cout<<"You have entered invalid option!\n";
  623.             system("pause");
  624.         }
  625.         system("cls");
  626.     }while(ll<1);
  627.  
  628.  
  629.     return pick;
  630. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement