Advertisement
Guest User

coding

a guest
Dec 10th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 11.76 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <fstream>
  4. #include <string>
  5. #include <cstdlib>
  6. #include<Windows.h>
  7. using namespace std;
  8.  
  9. float calcSD(float arrayPass[320], int startcnt1, int endcnt1, int startcnt2, int endcnt2, int divcnt);
  10. float calcAverage(float arrayPass[320], int startcnt1, int endcnt1, int divcnt);
  11. float calcHighest(float arrayPass[320]);
  12. float qAverage(float arrayPass[320], float minVal, float maxVal, int qcount);
  13. float qstdDev(float arrayPass[320], float minVal, float maxVal, int qcount);
  14. float qMinimum(float arrayPass[320], float* minVal, float* maxVal);
  15. float qMaximum(float arrayPass[320], float* minVal, float* maxVal);
  16.  
  17. struct Data{
  18.     float values[320];
  19. };
  20.  
  21. struct Quantiles{
  22.     float cntr,avg,stddev,qmin,qmax,sum,qx,qy;
  23. };
  24.  
  25. int main()
  26. {
  27.     float low,high,result[320],f_final[320],j,stdDev=0,avg=0,resHighest=0;
  28.     int x=0;
  29.     int menu=0;
  30.     string resFile[320];
  31.  
  32.     Data fx[2];
  33.     j=1;
  34.     for(int i=0;i<320;i++){
  35.         result[i] = sin(j) + 1.0/(sin(j));
  36.         j+=0.5;
  37.     }
  38.  
  39.     /* Largest value last 100 */
  40.     resHighest=calcHighest(result);
  41.     for(int i=0;i<320;i++){
  42.         fx[0].values[i]=result[i]-resHighest;
  43.     }
  44.  
  45.     // Calculate Standard Deviation first 50 and last 50
  46.  
  47.     stdDev=calcSD(fx[0].values,0,50,270,320,50);
  48.     for(int i=0;i<320;i++){
  49.         fx[1].values[i]=fx[0].values[i]+stdDev;
  50.     }
  51.  
  52.  
  53.     /* Average first 100 values */
  54.     avg=calcAverage(fx[1].values,0,100,100);
  55.     for(int i=0;i<320;i++){
  56.         f_final[i]=fx[1].values[i]-avg;
  57.     }
  58.  
  59.     float minVal=0,maxVal=0,width=0;
  60.  
  61.     minVal=f_final[0];
  62.     for(int i=0;i<320;i++){
  63.         if(minVal>f_final[i])
  64.             minVal=f_final[i];
  65.         }
  66.  
  67.     maxVal=f_final[0];
  68.     for(int i=0;i<320;i++){
  69.         if(maxVal<f_final[i])
  70.             maxVal=f_final[i];
  71.         }
  72.  
  73.     width=(maxVal-minVal)/5;
  74.  
  75.     Quantiles q[5];
  76.  
  77.     //range 1
  78.     q[0].qx=minVal , q[0].qy=minVal+width;
  79.  
  80.     //range 2
  81.     q[1].qx=q[0].qy , q[1].qy=q[0].qy+width;
  82.  
  83.     //range 3
  84.     q[2].qx=q[1].qy , q[2].qy=q[1].qy+width;
  85.  
  86.     //range 4
  87.     q[3].qx=q[2].qy , q[3].qy=q[2].qy+width;
  88.  
  89.     //range 5
  90.     q[4].qx=q[3].qy , q[4].qy=q[3].qy+width;
  91.  
  92.     q[0].cntr=0;
  93.     q[1].cntr=0;
  94.     q[2].cntr=0;
  95.     q[3].cntr=0;
  96.     q[4].cntr=0;
  97.     /* First Quantile */
  98.     for(int z=0;z<5;z++){
  99.         for(int i=0;i<320;i++){
  100.             if(f_final[i]>=q[z].qx && f_final[i]<q[z].qy){
  101.                 q[z].cntr++;
  102.             }
  103.         }
  104.         if(q[z].cntr!=0){
  105.             q[z].avg=qAverage(f_final,q[z].qx,q[z].qy,q[z].cntr);
  106.             q[z].stddev=qstdDev(f_final,q[z].qx,q[z].qy,q[z].cntr);
  107.             q[z].qmin=qMinimum(f_final,&q[z].qx,&q[z].qy);
  108.             q[z].qmax=qMaximum(f_final,&q[z].qx,&q[z].qy);
  109.         }else{
  110.             q[z].avg=0;
  111.             q[z].stddev=0;
  112.             q[z].qmin=0;
  113.             q[z].qmax=0;
  114.         }
  115.     }
  116.     string name;
  117.     int id,i,c,d;
  118.     cout<< "Enter Your Name:" << endl;
  119.     getline(cin,name);
  120.     cout<< "Enter Student Id:" << endl;
  121.     cin >> id;
  122.  
  123.     system("color 07");
  124.     char a=177, b=219;
  125.     cout<<"\n\n\n\n\t\t\t\tLOADING....";
  126.     cout<<"\n";
  127.     cout<<"\t\t\t\t";
  128.  
  129.     for (i=0;i<25;i++)
  130.         cout<<a;
  131.         c=rand()%200;
  132.         Sleep(c);
  133.         cout<<"\r";
  134.         cout<<"\t\t\t\t";
  135.     for (i=0;i<25;i++){
  136.         cout<<b;
  137.         d=rand()%150;
  138.         Sleep(d);}
  139.         system("pause>0");
  140.         system ("CLS");
  141.  
  142.     do{
  143.         cout<<"f(x) = sin (x) + cosec (x)"<<endl<<endl;
  144.         cout<<"[1] View unfiltered values"<<endl;
  145.         cout<<"[2] Save values to file"<<endl;
  146.         cout<<"[3] View filtered values"<<endl;
  147.         cout<<"[4] View in each quantile"<<endl;
  148.         cout<<"[5] Exit"<<endl;
  149.         cout<<endl;
  150.         cout<<"Enter choice: ";
  151.         cin>>menu;
  152.         system("CLS");
  153.         switch(menu)
  154.         {
  155.         case 1:
  156.             {
  157.                 low=0,high=0;
  158.                 // Display in range of x
  159.                 while(low<1 || high>160.5){
  160.                     cout<<"Range of x:";
  161.                     cin>>low>>high;
  162.                     if(low>=1 && high<=160.5){
  163.                         break;
  164.                     }
  165.                 }
  166.  
  167.                 j=low;
  168.                 while(j<=high){
  169.                     x=(j-1)*2;
  170.                     cout << "sin("<<j<<") + cosec("<<j<<") = "<< result[x] << endl;
  171.                     j+=0.5;
  172.                 }
  173.             }
  174.             system("PAUSE");
  175.             system("CLS");
  176.             break;
  177.  
  178.         case 2:
  179.             {
  180.                 //Save to text file
  181.                 ofstream saveFile ("example.txt");
  182.                 if(saveFile.is_open()){
  183.                     float p=1;
  184.                     for(int i=0;i<320;i++){
  185.                         saveFile<<"f("<<p<<") = "<<f_final[i]<<endl;
  186.                         p+=0.5;
  187.                     }
  188.                     saveFile.close();
  189.                 }else{cout<<"Unable to open file";}
  190.  
  191.                 cout<<"Values saved to text file."<<endl;
  192.             }
  193.             system("PAUSE");
  194.             system("CLS");
  195.             break;
  196.  
  197.         case 3:
  198.             {
  199.                 short counter=0;
  200.                 string line;
  201.                 ifstream readFile ("example.txt");
  202.                 if (readFile.is_open()){
  203.                     while ( getline (readFile, line ).good () ){
  204.                         resFile[counter]=line;
  205.                         counter++;
  206.                     }
  207.                     readFile.close();
  208.                 }else {cout << "Unable to open file";}
  209.                 // Display in range of x
  210.                 float low1=0,high1=0;
  211.                 while(low1<1 || high1>160.5){
  212.                     cout<<"Range of x:";
  213.                     cin>>low1>>high1;
  214.                     if(low1>=1 && high1<=160.5){
  215.                         break;
  216.                     }
  217.                 }
  218.                 j=low1;
  219.                 while(j<=high1){
  220.                     x=(j-1)*2;
  221.                     cout << resFile[x] << endl;
  222.                     j+=0.5;
  223.                 }
  224.             }
  225.             system("PAUSE");
  226.             system("CLS");
  227.             break;
  228.  
  229.         case 4:
  230.             {
  231.                 cout<<"min = "<<minVal<<endl;
  232.                 cout<<"max = "<<maxVal<<endl;
  233.                 cout<<"width = "<<width<<endl<<endl;
  234.                 system("PAUSE");
  235.                 system("CLS");
  236.  
  237.                 cout<<"First Quantile"<<endl;
  238.                 cout<<"Range of quantile 1 : "<<q[0].qx<<" <= q1 <= "<<q[0].qy<<endl;
  239.                 cout<<q[0].cntr<<" value found."<<endl<<endl;
  240.                 cout<<"Average = "<<q[0].avg<<endl;
  241.                 cout<<"Standard Deviation = "<<q[0].stddev<<endl;
  242.                 cout<<"Minimum = "<<q[0].qmin<<endl;
  243.                 cout<<"Maximum = "<<q[0].qmax<<endl;
  244.                 cout<<endl;
  245.                 system("PAUSE");
  246.                 system("CLS");
  247.  
  248.                 cout<<"Second Quantile"<<endl;
  249.                 cout<<"Range of quantile 2 : "<<q[1].qx<<" <= q2 <= "<<q[1].qy<<endl;
  250.                 cout<<q[1].cntr<<" value found."<<endl<<endl;
  251.                 cout<<"Average = "<<q[1].avg<<endl;
  252.                 cout<<"Standard Deviation = "<<q[1].stddev<<endl;
  253.                 cout<<"Minimum = "<<q[1].qmin<<endl;
  254.                 cout<<"Maximum = "<<q[1].qmax<<endl;
  255.                 cout<<endl;
  256.                 system("PAUSE");
  257.                 system("CLS");
  258.  
  259.                 cout<<"Third Quantile"<<endl;
  260.                 cout<<"Range of quantile 3 : "<<q[2].qx<<" <= q3 <= "<<q[2].qy<<endl;
  261.                 cout<<q[2].cntr<<" value found."<<endl<<endl;
  262.                 cout<<"Average = "<<q[2].avg<<endl;
  263.                 cout<<"Standard Deviation = "<<q[2].stddev<<endl;
  264.                 cout<<"Minimum = "<<q[2].qmin<<endl;
  265.                 cout<<"Maximum = "<<q[2].qmax<<endl;
  266.                 cout<<endl;
  267.                 system("PAUSE");
  268.                 system("CLS");
  269.  
  270.                 cout<<"Fourth Quantile"<<endl;
  271.                 cout<<"Range of quantile 4 : "<<q[3].qx<<" <= q4<= "<<q[3].qy<<endl;
  272.                 cout<<q[3].cntr<<" value found."<<endl<<endl;
  273.                 cout<<"Average = "<<q[3].avg<<endl;
  274.                 cout<<"Standard Deviation = "<<q[3].stddev<<endl;
  275.                 cout<<"Minimum = "<<q[3].qmin<<endl;
  276.                 cout<<"Maximum = "<<q[3].qmax<<endl;
  277.                 cout<<endl;
  278.                 system("PAUSE");
  279.                 system("CLS");
  280.  
  281.                 cout<<"Fifth Quantile"<<endl;
  282.                 cout<<"Range of quantile 5 : "<<q[4].qx<<" <= q5 <= "<<q[4].qy<<endl;
  283.                 cout<<q[4].cntr<<" value found."<<endl<<endl;
  284.                 cout<<"Average = "<<q[4].avg<<endl;
  285.                 cout<<"Standard Deviation = "<<q[4].stddev<<endl;
  286.                 cout<<"Minimum = "<<q[4].qmin<<endl;
  287.                 cout<<"Maximum = "<<q[4].qmax<<endl;
  288.                 cout<<endl;
  289.             }
  290.             system("PAUSE");
  291.             system("CLS");
  292.             break;
  293.  
  294.         case 5:
  295.             cout<<"Thank you"<<endl<<endl;
  296.             exit(0);
  297.         }
  298.     }while(menu!=5);
  299.  
  300.     return 0;
  301. }
  302.  
  303. float calcSD(float arrayPass[320], int startcnt1, int endcnt1, int startcnt2, int endcnt2, int divcnt)
  304. {
  305.     float sd=0,sd1=0,sd2=0,sum1=0,sum2=0,mean1=0,mean2=0,variance1=0,variance2=0;
  306.     for(int i=startcnt1;i<endcnt1;i++){
  307.         sum1+=arrayPass[i];
  308.     }
  309.     mean1=sum1 / divcnt;
  310.     for(int i=startcnt1;i<endcnt1;i++){
  311.         variance1 += pow(arrayPass[i] - mean1, 2);
  312.     }
  313.     variance1/=divcnt;
  314.     sd1=sqrt(variance1);
  315.     /* ================================================ */
  316.     for(int i=startcnt2;i<endcnt2;i++){
  317.         sum2+=arrayPass[i];
  318.     }
  319.     mean2=sum2 / divcnt;
  320.     for(int i=startcnt2;i<endcnt2;i++){
  321.         variance2 += pow(arrayPass[i] - mean2, 2);
  322.     }
  323.     variance2/=divcnt;
  324.     sd2=sqrt(variance2);
  325.  
  326.     sd = sd1+sd2;
  327.     return sd;
  328. }
  329.  
  330. float calcAverage(float arrayPass[320], int startcnt, int endcnt, int divcnt)
  331. {
  332.     float sumAverage=0,average=0;
  333.     for(int i=startcnt;i<endcnt;i++){
  334.         sumAverage+=arrayPass[i];
  335.     }
  336.     average=sumAverage/divcnt;
  337.     return average;
  338. }
  339.  
  340. float calcHighest(float arrayPass[320])
  341. {
  342.     float resHigh=0;
  343.     resHigh=arrayPass[0];
  344.     for(int i=220;i<=320;i++){
  345.         if(resHigh<arrayPass[i])
  346.             resHigh=arrayPass[i];
  347.     }
  348.  
  349.     return resHigh;
  350. }
  351.  
  352. float qAverage(float arrayPass[320], float minVal, float maxVal, int qcount)
  353. {
  354.     float sum=0,average=0;
  355.     for(int i=0;i<320;i++){
  356.         if(arrayPass[i]>=minVal && arrayPass[i]<maxVal){
  357.             sum+=arrayPass[i];
  358.         }
  359.     }
  360.     average=sum/qcount;
  361.     return average;
  362. }
  363.  
  364. float qstdDev(float arrayPass[320], float minVal, float maxVal, int qcount)
  365. {
  366.     float sd=0,sum=0,mean=0,variance=0;
  367.     for(int i=0;i<320;i++){
  368.         if(arrayPass[i]>=minVal && arrayPass[i]<maxVal){
  369.             sum+=arrayPass[i];
  370.         }
  371.     }
  372.     mean=sum/qcount;
  373.     for(int i=0;i<320;i++){
  374.         if(arrayPass[i]>=minVal && arrayPass[i]<maxVal){
  375.             variance += pow(arrayPass[i] - mean, 2);
  376.         }
  377.     }
  378.     variance/=qcount;
  379.     sd=sqrt(variance);
  380.     return sd;
  381. }
  382.  
  383. float qMinimum(float arrayPass[320], float* minVal, float* maxVal)
  384. {
  385.     float minimum=10000;
  386.     for(int i=0;i<320;i++){
  387.         if(arrayPass[i]>=*minVal && arrayPass[i]<*maxVal){
  388.             if(minimum>arrayPass[i]){
  389.                 minimum=arrayPass[i];
  390.             }
  391.         }
  392.     }
  393.     return minimum;
  394. }
  395.  
  396. float qMaximum(float arrayPass[320], float* minVal, float* maxVal)
  397. {
  398.     float maximum=-10000;
  399.     for(int i=0;i<320;i++){
  400.         if(arrayPass[i]>=*minVal && arrayPass[i]<*maxVal){
  401.             if(maximum<arrayPass[i]){
  402.                 maximum=arrayPass[i];
  403.             }
  404.         }
  405.     }
  406.     return maximum;
  407. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement