Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <fstream>
- #include <string>
- #include <cstdlib>
- #include<Windows.h>
- using namespace std;
- float calcSD(float arrayPass[320], int startcnt1, int endcnt1, int startcnt2, int endcnt2, int divcnt);
- float calcAverage(float arrayPass[320], int startcnt1, int endcnt1, int divcnt);
- float calcHighest(float arrayPass[320]);
- float qAverage(float arrayPass[320], float minVal, float maxVal, int qcount);
- float qstdDev(float arrayPass[320], float minVal, float maxVal, int qcount);
- float qMinimum(float arrayPass[320], float* minVal, float* maxVal);
- float qMaximum(float arrayPass[320], float* minVal, float* maxVal);
- struct Data{
- float values[320];
- };
- struct Quantiles{
- float cntr,avg,stddev,qmin,qmax,sum,qx,qy;
- };
- int main()
- {
- float low,high,result[320],f_final[320],j,stdDev=0,avg=0,resHighest=0;
- int x=0;
- int menu=0;
- string resFile[320];
- Data fx[2];
- j=1;
- for(int i=0;i<320;i++){
- result[i] = sin(j) + 1.0/(sin(j));
- j+=0.5;
- }
- /* Largest value last 100 */
- resHighest=calcHighest(result);
- for(int i=0;i<320;i++){
- fx[0].values[i]=result[i]-resHighest;
- }
- // Calculate Standard Deviation first 50 and last 50
- stdDev=calcSD(fx[0].values,0,50,270,320,50);
- for(int i=0;i<320;i++){
- fx[1].values[i]=fx[0].values[i]+stdDev;
- }
- /* Average first 100 values */
- avg=calcAverage(fx[1].values,0,100,100);
- for(int i=0;i<320;i++){
- f_final[i]=fx[1].values[i]-avg;
- }
- float minVal=0,maxVal=0,width=0;
- minVal=f_final[0];
- for(int i=0;i<320;i++){
- if(minVal>f_final[i])
- minVal=f_final[i];
- }
- maxVal=f_final[0];
- for(int i=0;i<320;i++){
- if(maxVal<f_final[i])
- maxVal=f_final[i];
- }
- width=(maxVal-minVal)/5;
- Quantiles q[5];
- //range 1
- q[0].qx=minVal , q[0].qy=minVal+width;
- //range 2
- q[1].qx=q[0].qy , q[1].qy=q[0].qy+width;
- //range 3
- q[2].qx=q[1].qy , q[2].qy=q[1].qy+width;
- //range 4
- q[3].qx=q[2].qy , q[3].qy=q[2].qy+width;
- //range 5
- q[4].qx=q[3].qy , q[4].qy=q[3].qy+width;
- q[0].cntr=0;
- q[1].cntr=0;
- q[2].cntr=0;
- q[3].cntr=0;
- q[4].cntr=0;
- /* First Quantile */
- for(int z=0;z<5;z++){
- for(int i=0;i<320;i++){
- if(f_final[i]>=q[z].qx && f_final[i]<q[z].qy){
- q[z].cntr++;
- }
- }
- if(q[z].cntr!=0){
- q[z].avg=qAverage(f_final,q[z].qx,q[z].qy,q[z].cntr);
- q[z].stddev=qstdDev(f_final,q[z].qx,q[z].qy,q[z].cntr);
- q[z].qmin=qMinimum(f_final,&q[z].qx,&q[z].qy);
- q[z].qmax=qMaximum(f_final,&q[z].qx,&q[z].qy);
- }else{
- q[z].avg=0;
- q[z].stddev=0;
- q[z].qmin=0;
- q[z].qmax=0;
- }
- }
- string name;
- int id,i,c,d;
- cout<< "Enter Your Name:" << endl;
- getline(cin,name);
- cout<< "Enter Student Id:" << endl;
- cin >> id;
- system("color 07");
- char a=177, b=219;
- cout<<"\n\n\n\n\t\t\t\tLOADING....";
- cout<<"\n";
- cout<<"\t\t\t\t";
- for (i=0;i<25;i++)
- cout<<a;
- c=rand()%200;
- Sleep(c);
- cout<<"\r";
- cout<<"\t\t\t\t";
- for (i=0;i<25;i++){
- cout<<b;
- d=rand()%150;
- Sleep(d);}
- system("pause>0");
- system ("CLS");
- do{
- cout<<"f(x) = sin (x) + cosec (x)"<<endl<<endl;
- cout<<"[1] View unfiltered values"<<endl;
- cout<<"[2] Save values to file"<<endl;
- cout<<"[3] View filtered values"<<endl;
- cout<<"[4] View in each quantile"<<endl;
- cout<<"[5] Exit"<<endl;
- cout<<endl;
- cout<<"Enter choice: ";
- cin>>menu;
- system("CLS");
- switch(menu)
- {
- case 1:
- {
- low=0,high=0;
- // Display in range of x
- while(low<1 || high>160.5){
- cout<<"Range of x:";
- cin>>low>>high;
- if(low>=1 && high<=160.5){
- break;
- }
- }
- j=low;
- while(j<=high){
- x=(j-1)*2;
- cout << "sin("<<j<<") + cosec("<<j<<") = "<< result[x] << endl;
- j+=0.5;
- }
- }
- system("PAUSE");
- system("CLS");
- break;
- case 2:
- {
- //Save to text file
- ofstream saveFile ("example.txt");
- if(saveFile.is_open()){
- float p=1;
- for(int i=0;i<320;i++){
- saveFile<<"f("<<p<<") = "<<f_final[i]<<endl;
- p+=0.5;
- }
- saveFile.close();
- }else{cout<<"Unable to open file";}
- cout<<"Values saved to text file."<<endl;
- }
- system("PAUSE");
- system("CLS");
- break;
- case 3:
- {
- short counter=0;
- string line;
- ifstream readFile ("example.txt");
- if (readFile.is_open()){
- while ( getline (readFile, line ).good () ){
- resFile[counter]=line;
- counter++;
- }
- readFile.close();
- }else {cout << "Unable to open file";}
- // Display in range of x
- float low1=0,high1=0;
- while(low1<1 || high1>160.5){
- cout<<"Range of x:";
- cin>>low1>>high1;
- if(low1>=1 && high1<=160.5){
- break;
- }
- }
- j=low1;
- while(j<=high1){
- x=(j-1)*2;
- cout << resFile[x] << endl;
- j+=0.5;
- }
- }
- system("PAUSE");
- system("CLS");
- break;
- case 4:
- {
- cout<<"min = "<<minVal<<endl;
- cout<<"max = "<<maxVal<<endl;
- cout<<"width = "<<width<<endl<<endl;
- system("PAUSE");
- system("CLS");
- cout<<"First Quantile"<<endl;
- cout<<"Range of quantile 1 : "<<q[0].qx<<" <= q1 <= "<<q[0].qy<<endl;
- cout<<q[0].cntr<<" value found."<<endl<<endl;
- cout<<"Average = "<<q[0].avg<<endl;
- cout<<"Standard Deviation = "<<q[0].stddev<<endl;
- cout<<"Minimum = "<<q[0].qmin<<endl;
- cout<<"Maximum = "<<q[0].qmax<<endl;
- cout<<endl;
- system("PAUSE");
- system("CLS");
- cout<<"Second Quantile"<<endl;
- cout<<"Range of quantile 2 : "<<q[1].qx<<" <= q2 <= "<<q[1].qy<<endl;
- cout<<q[1].cntr<<" value found."<<endl<<endl;
- cout<<"Average = "<<q[1].avg<<endl;
- cout<<"Standard Deviation = "<<q[1].stddev<<endl;
- cout<<"Minimum = "<<q[1].qmin<<endl;
- cout<<"Maximum = "<<q[1].qmax<<endl;
- cout<<endl;
- system("PAUSE");
- system("CLS");
- cout<<"Third Quantile"<<endl;
- cout<<"Range of quantile 3 : "<<q[2].qx<<" <= q3 <= "<<q[2].qy<<endl;
- cout<<q[2].cntr<<" value found."<<endl<<endl;
- cout<<"Average = "<<q[2].avg<<endl;
- cout<<"Standard Deviation = "<<q[2].stddev<<endl;
- cout<<"Minimum = "<<q[2].qmin<<endl;
- cout<<"Maximum = "<<q[2].qmax<<endl;
- cout<<endl;
- system("PAUSE");
- system("CLS");
- cout<<"Fourth Quantile"<<endl;
- cout<<"Range of quantile 4 : "<<q[3].qx<<" <= q4<= "<<q[3].qy<<endl;
- cout<<q[3].cntr<<" value found."<<endl<<endl;
- cout<<"Average = "<<q[3].avg<<endl;
- cout<<"Standard Deviation = "<<q[3].stddev<<endl;
- cout<<"Minimum = "<<q[3].qmin<<endl;
- cout<<"Maximum = "<<q[3].qmax<<endl;
- cout<<endl;
- system("PAUSE");
- system("CLS");
- cout<<"Fifth Quantile"<<endl;
- cout<<"Range of quantile 5 : "<<q[4].qx<<" <= q5 <= "<<q[4].qy<<endl;
- cout<<q[4].cntr<<" value found."<<endl<<endl;
- cout<<"Average = "<<q[4].avg<<endl;
- cout<<"Standard Deviation = "<<q[4].stddev<<endl;
- cout<<"Minimum = "<<q[4].qmin<<endl;
- cout<<"Maximum = "<<q[4].qmax<<endl;
- cout<<endl;
- }
- system("PAUSE");
- system("CLS");
- break;
- case 5:
- cout<<"Thank you"<<endl<<endl;
- exit(0);
- }
- }while(menu!=5);
- return 0;
- }
- float calcSD(float arrayPass[320], int startcnt1, int endcnt1, int startcnt2, int endcnt2, int divcnt)
- {
- float sd=0,sd1=0,sd2=0,sum1=0,sum2=0,mean1=0,mean2=0,variance1=0,variance2=0;
- for(int i=startcnt1;i<endcnt1;i++){
- sum1+=arrayPass[i];
- }
- mean1=sum1 / divcnt;
- for(int i=startcnt1;i<endcnt1;i++){
- variance1 += pow(arrayPass[i] - mean1, 2);
- }
- variance1/=divcnt;
- sd1=sqrt(variance1);
- /* ================================================ */
- for(int i=startcnt2;i<endcnt2;i++){
- sum2+=arrayPass[i];
- }
- mean2=sum2 / divcnt;
- for(int i=startcnt2;i<endcnt2;i++){
- variance2 += pow(arrayPass[i] - mean2, 2);
- }
- variance2/=divcnt;
- sd2=sqrt(variance2);
- sd = sd1+sd2;
- return sd;
- }
- float calcAverage(float arrayPass[320], int startcnt, int endcnt, int divcnt)
- {
- float sumAverage=0,average=0;
- for(int i=startcnt;i<endcnt;i++){
- sumAverage+=arrayPass[i];
- }
- average=sumAverage/divcnt;
- return average;
- }
- float calcHighest(float arrayPass[320])
- {
- float resHigh=0;
- resHigh=arrayPass[0];
- for(int i=220;i<=320;i++){
- if(resHigh<arrayPass[i])
- resHigh=arrayPass[i];
- }
- return resHigh;
- }
- float qAverage(float arrayPass[320], float minVal, float maxVal, int qcount)
- {
- float sum=0,average=0;
- for(int i=0;i<320;i++){
- if(arrayPass[i]>=minVal && arrayPass[i]<maxVal){
- sum+=arrayPass[i];
- }
- }
- average=sum/qcount;
- return average;
- }
- float qstdDev(float arrayPass[320], float minVal, float maxVal, int qcount)
- {
- float sd=0,sum=0,mean=0,variance=0;
- for(int i=0;i<320;i++){
- if(arrayPass[i]>=minVal && arrayPass[i]<maxVal){
- sum+=arrayPass[i];
- }
- }
- mean=sum/qcount;
- for(int i=0;i<320;i++){
- if(arrayPass[i]>=minVal && arrayPass[i]<maxVal){
- variance += pow(arrayPass[i] - mean, 2);
- }
- }
- variance/=qcount;
- sd=sqrt(variance);
- return sd;
- }
- float qMinimum(float arrayPass[320], float* minVal, float* maxVal)
- {
- float minimum=10000;
- for(int i=0;i<320;i++){
- if(arrayPass[i]>=*minVal && arrayPass[i]<*maxVal){
- if(minimum>arrayPass[i]){
- minimum=arrayPass[i];
- }
- }
- }
- return minimum;
- }
- float qMaximum(float arrayPass[320], float* minVal, float* maxVal)
- {
- float maximum=-10000;
- for(int i=0;i<320;i++){
- if(arrayPass[i]>=*minVal && arrayPass[i]<*maxVal){
- if(maximum<arrayPass[i]){
- maximum=arrayPass[i];
- }
- }
- }
- return maximum;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement