Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<stdlib.h>
- #include<cmath>
- #include <bits/stdc++.h>
- #include <fstream>
- using namespace std;
- void filter(float f_finalz[320]);
- void qt(float ffinal[320]);
- int menu();
- int main(){
- float x=1,result;
- float arr[320],f_final[320];
- int an=0;
- string infile[320];
- short cnt=0;
- int choice=0;
- int lll=0;
- //1
- int num=1;
- float num2=1;
- //generate all fx values
- for( int i=0;i<320;i++){
- result=1/cos(x)+log10(x);
- arr[i]=result;
- x+=0.5;
- }
- do{
- choice=0;
- choice=menu();
- if(choice==1){
- //unfiltered
- int loop=0;
- cout<<"Equation: f(x)= sec(x) + log10(x)\n";
- cout<<"Range of x: 1<= x <=160.5\n";
- cout<<"Step of x: 0.5\n";
- loop=0;
- float a=0,b=0;
- char ch;
- int y=0;
- do{
- cout<<"Insert value for x in the range between 1~160.5\n";
- cin>>a>>b;
- if(a>=1 && a<=160.5 && b>=1 && b<=160.5 && a<=b){
- cout<<"Your range is as below:\n"<<a<<"<=x<="<<b<<"\n\n";
- cout<<"Do you accept to continue with this function?(y/n)\n";
- cin>>ch;
- if(ch=='y'){//1=0,2=2,2.5=3,6=10
- while(a<=b){
- y=(a-1)*2;
- cout<<"f("<<a<<") \t=\t"<<arr[y]<<endl;
- a+=0.5;
- }loop++;
- }
- else if(ch=='n'){
- loop++;
- }
- else(
- cout<<"You have entered invalid option\n");
- }
- else(
- cout<<"You have entered invalid value\n");
- system("pause");
- system ("CLS");
- }while(loop<1);
- }
- //2
- //copy into f_final
- for(int i=0;i<320;i++)
- f_final[i]=arr[i];
- //filter function
- filter(f_final);
- //3
- if(choice==2){
- // 3.1 saving into file f_final tbf
- ofstream myfile;
- myfile.open("f_final1.txt");
- if(myfile.is_open()){
- for(int i =0;i<320;i++)
- myfile <<f_final[i]<<endl;
- myfile.close();
- }
- else
- cout<<"The file cannot be open";
- cnt=0;
- // 3.2 reading filtered value
- string line;
- ifstream readFile ("f_final1.txt");
- if (readFile.is_open()){
- while ( getline (readFile, line ).good () ){
- infile[cnt]=line;
- //cout << infile[cnt] << endl;
- cnt++;
- }
- readFile.close();
- }else {cout << "Unable to open file";}
- int loopp=0;
- char chh;
- loopp=0;
- float aa,bb;
- int yy=0;
- do{
- cout<<"Insert new value for x in the range between 1~160.5\n";
- cin>>aa>>bb;
- if(aa>=1 && aa<=160.5 && bb>=1 && bb<=160.5 && aa<=bb){
- cout<<"Your range is as below:\n"<<aa<<"<=x<="<<bb<<"\n\n";
- cout<<"Do you accept to continue with this function?(y/n)\n";
- cin>>chh;
- if(chh=='y'){//1=0,2=2,2.5=3,6=10
- while(aa<=bb){
- yy=(aa-1)*2;
- cout<<"f("<<aa<<") \t\t=\t"<<infile[yy]<<endl;
- aa+=0.5;
- }
- loopp++;
- }
- else if(chh=='n'){
- loopp++;
- }
- else(
- cout<<"You have entered invalid option\n");
- }
- else(
- cout<<"You have entered invalid value\n");
- system("pause");
- system ("CLS");
- }while(loopp<1);
- }
- //4
- if(choice==3){
- qt(f_final);
- }
- if(choice==4){
- cout<<"Thank you for using my service :)"<<endl;
- lll++;
- }
- }while(lll<1);
- return 0;
- }
- void filter(float f_finalz[320]){
- // =filter1 standard deviation of last 100
- float sd=0,sda=0,sum=0,sdb=0,xi[100],fff[320];
- // for(int i=0;i<320;i++)
- // fff[i]=f_final[i];
- //calculate mean
- for(int kl=219;kl<320;kl++){
- sda=sda+f_finalz[kl];
- }
- sda=sda/100;
- /* xi[222]=(f_final[222]-sda)*(f_final[222]-sda);
- sum+=xi[222];
- cout<<"\t"<<sum<<endl;
- system("pause");
- */
- //calculate xi
- for(int kl=219;kl<320;kl++){
- xi[kl]=(f_finalz[kl]-sda)*(f_finalz[kl]-sda);
- sum+=xi[kl];
- }
- sdb=sum/99;
- sd=sqrt(sdb);
- // cout<<"sd="<<sd<<endl;
- // 2.1
- for(int i=0;i<320;i++)
- f_finalz[i]-=sd;
- // =filter2 average of first 100
- float ave=0;
- // finding average of first 100
- for(int kl=0;kl<100;kl++){
- ave=ave+f_finalz[kl];
- ave/=100;
- }
- // cout<<"ave="<<ave<<endl;
- // 2.2
- for(int i=0;i<320;i++)
- f_finalz[i]=f_finalz[i]+ave;
- // =filter3 lowest of first50 and last50
- float fnl50[100],minn=10000;
- //combining first and last 50
- for(int i=0;i<50;i++)
- fnl50[i]=f_finalz[i];
- for(int i=270;i<320;i++)
- fnl50[i-220]=f_finalz[i];
- //finding lowest 100
- for(int i=0;i<100;i++){
- if(fnl50[i]<minn){
- minn=fnl50[i];
- }}
- //2.3
- for(int i=0;i<320;i++)
- f_finalz[i]-=minn;
- // for(int i=0;i<320;i++)
- // cout<<i+1<<".\t"<<f_finalz[i]<<endl;
- }
- void qt(float ffinal[320]){
- float ff[320],mmin=10000,mmax=-10000;
- struct quantile{
- float qave,qsd,qmin,qmax,range,qn,qsum,qxsum,qcnt;
- };
- system("cls");
- //find min
- for(int i=0;i<320;i++){
- if(ffinal[i]<mmin){
- mmin=ffinal[i];
- }
- }
- cout<<"min= "<<mmin<<endl;
- //find max
- for(int i=0;i<320;i++){
- if(ffinal[i]>mmax){
- mmax=ffinal[i];
- }
- }
- cout<<"max= "<<mmax<<endl;
- //find qwidth
- float qwidth=0;
- qwidth=(mmax-mmin)/5;
- cout<<"qwidth= "<<qwidth<<endl;
- float x1,y1,x2,y2,x3,y3,x4,y4,x5,y5;
- //range 1
- x1=mmin , y1=mmin+qwidth;
- //range 2
- x2=y1 , y2=y1+qwidth;
- //range 3
- x3=y2 , y3=y2+qwidth;
- //range 4
- x4=y3 , y4=y3+qwidth;
- //range 5
- x5=y4 , y5=y4+qwidth;
- struct quantile qt[10];
- qt[0].qave=0;
- qt[0].qsd=0;
- qt[0].qmin=10000;
- qt[1].qmin=10000;
- qt[2].qmin=10000;
- qt[3].qmin=10000;
- qt[4].qmin=10000;
- qt[0].qmax=-10000;
- qt[1].qmax=-10000;
- qt[2].qmax=-10000;
- qt[3].qmax=-10000;
- qt[4].qmax=-10000;
- qt[0].qn=0;
- qt[0].qsum=0;
- qt[0].qxsum=0;
- qt[0].qcnt=0;
- qt[1].qcnt=0;
- qt[2].qcnt=0;
- qt[3].qcnt=0;
- qt[4].qcnt=0;
- system("cls");
- //q1
- cout<<"Range of quantile 1 : "<<x1<<" <= q1 <= "<<y1<<endl;
- for(int i=0;i<320;i++){
- if(ffinal[i]>=x1 && ffinal[i]<=y1){
- qt[0].qcnt++;
- //cout<<qt[0].qcnt<<endl;
- }
- }
- if(qt[0].qcnt!=0){
- //finding average
- for(int i=0;i<320;i++){
- if(ffinal[i]>=x1 && ffinal[i]<=y1){
- qt[0].qsum+=ffinal[i];
- }
- }
- qt[0].qave=qt[0].qsum/qt[0].qcnt;
- //finding min & max
- for(int i=0;i<320;i++){
- if(ffinal[i]>=x1 && ffinal[i]<=y1){
- if(ffinal[i]<qt[0].qmin){
- qt[0].qmin=ffinal[i];
- }
- if(ffinal[i]>qt[0].qmax){
- qt[0].qmax=ffinal[i];
- }
- }
- }
- //finding standard deviation
- for(int i=0;i<320;i++){
- if(ffinal[i]>=x1 && ffinal[i]<=y1){
- qt[0].qxsum+=((ffinal[i]-qt[0].qave)*(ffinal[i]-qt[0].qave));
- }
- }
- qt[0].qxsum/=(qt[0].qcnt-1);
- qt[0].qsd=sqrt(qt[0].qxsum);
- }
- else{
- qt[0].qave=0;
- qt[0].qsd=0;
- qt[0].qmin=0;
- qt[0].qmax=0;
- }
- cout<<qt[0].qcnt<<" value found"<<endl<<endl;
- cout<<"average = "<<qt[0].qave<<endl;
- cout<<"standard deviation = "<<qt[0].qsd<<endl;
- cout<<"minimum = "<<qt[0].qmin<<endl;
- cout<<"maximum = "<<qt[0].qmax<<endl;
- system("pause");
- system("cls");
- //q2
- cout<<"Range of quantile 2 : "<<x2<<" <= q2 <= "<<y2<<endl;
- for(int i=0;i<320;i++){
- if(ffinal[i]>=x2 && ffinal[i]<=y2){
- qt[1].qcnt++;
- }
- }
- if(qt[1].qcnt!=0){
- //finding average
- for(int i=0;i<320;i++){
- if(ffinal[i]>=x2 && ffinal[i]<=y2){
- qt[1].qsum+=ffinal[i];
- }
- }
- qt[1].qave=qt[1].qsum/qt[1].qcnt;
- //finding min & max
- for(int i=0;i<320;i++){
- if(ffinal[i]>=x2 && ffinal[i]<=y2){
- if(ffinal[i]<qt[1].qmin){
- qt[1].qmin=ffinal[i];
- }
- if(ffinal[i]>qt[1].qmax){
- qt[1].qmax=ffinal[i];
- }
- }
- }
- //finding standard deviation
- for(int i=0;i<320;i++){
- if(ffinal[i]>=x2 && ffinal[i]<=y2){
- qt[1].qxsum+=((ffinal[i]-qt[1].qave)*(ffinal[i]-qt[1].qave));
- }
- }
- qt[1].qxsum/=(qt[1].qcnt-1);
- qt[1].qsd=sqrt(qt[1].qxsum);
- }
- else{
- qt[1].qave=0;
- qt[1].qsd=0;
- qt[1].qmin=0;
- qt[1].qmax=0;
- }
- cout<<qt[1].qcnt<<" value found"<<endl<<endl;
- cout<<"average = "<<qt[1].qave<<endl;
- cout<<"standard deviation = "<<qt[1].qsd<<endl;
- cout<<"minimum = "<<qt[1].qmin<<endl;
- cout<<"maximum = "<<qt[1].qmax<<endl;
- system("pause");
- system("cls");
- //q3
- cout<<"Range of quantile 3 : "<<x3<<" <= q3 <= "<<y3<<endl;
- for(int i=0;i<320;i++){
- if(ffinal[i]>=x3 && ffinal[i]<=y3){
- qt[2].qcnt++;
- }
- }
- if(qt[2].qcnt!=0){
- //finding average
- for(int i=0;i<320;i++){
- if(ffinal[i]>=x3 && ffinal[i]<=y3){
- qt[2].qsum+=ffinal[i];
- }
- }
- qt[2].qave=qt[2].qsum/qt[2].qcnt;
- //finding min & max
- for(int i=0;i<320;i++){
- if(ffinal[i]>=x3 && ffinal[i]<=y3){
- if(ffinal[i]<qt[2].qmin){
- qt[2].qmin=ffinal[i];
- }
- if(ffinal[i]>qt[2].qmax){
- qt[2].qmax=ffinal[i];
- }
- }
- }
- //finding standard deviation
- for(int i=0;i<320;i++){
- if(ffinal[i]>=x3 && ffinal[i]<=y3){
- qt[2].qxsum+=((ffinal[i]-qt[2].qave)*(ffinal[i]-qt[2].qave));
- }
- }
- qt[2].qxsum/=(qt[2].qcnt-1);
- qt[2].qsd=sqrt(qt[2].qxsum);
- }
- else{
- qt[2].qave=0;
- qt[2].qsd=0;
- qt[2].qmin=0;
- qt[2].qmax=0;
- }
- cout<<qt[2].qcnt<<" value found"<<endl<<endl;
- cout<<"average = "<<qt[2].qave<<endl;
- cout<<"standard deviation = "<<qt[2].qsd<<endl;
- cout<<"minimum = "<<qt[2].qmin<<endl;
- cout<<"maximum = "<<qt[2].qmax<<endl;
- system("pause");
- system("cls");
- //q4
- cout<<"Range of quantile 4 : "<<x4<<" <= q4 <= "<<y4<<endl;
- for(int i=0;i<320;i++){
- if(ffinal[i]>=x4 && ffinal[i]<=y4){
- qt[3].qcnt++;
- }
- }
- if(qt[3].qcnt!=0){
- //finding average
- for(int i=0;i<320;i++){
- if(ffinal[i]>=x4 && ffinal[i]<=y4){
- qt[3].qsum+=ffinal[i];
- }
- }
- qt[3].qave=qt[3].qsum/qt[3].qcnt;
- //finding min & max
- for(int i=0;i<320;i++){
- if(ffinal[i]>=x4 && ffinal[i]<=y4){
- if(ffinal[i]<qt[3].qmin){
- qt[3].qmin=ffinal[i];
- }
- if(ffinal[i]>qt[3].qmax){
- qt[3].qmax=ffinal[i];
- }
- }
- }
- //finding standard deviation
- for(int i=0;i<320;i++){
- if(ffinal[i]>=x4 && ffinal[i]<=y4){
- qt[3].qxsum+=((ffinal[i]-qt[3].qave)*(ffinal[i]-qt[3].qave));
- }
- }
- qt[3].qxsum/=(qt[3].qcnt-1);
- qt[3].qsd=sqrt(qt[3].qxsum);
- }
- else{
- qt[3].qave=0;
- qt[3].qsd=0;
- qt[3].qmin=0;
- qt[3].qmax=0;
- }
- cout<<qt[3].qcnt<<" value found"<<endl<<endl;
- cout<<"average = "<<qt[3].qave<<endl;
- cout<<"standard deviation = "<<qt[3].qsd<<endl;
- cout<<"minimum = "<<qt[3].qmin<<endl;
- cout<<"maximum = "<<qt[3].qmax<<endl;
- system("pause");
- system("cls");
- //q5
- cout<<"Range of quantile 5 : "<<x5<<" <= q5 <= "<<y5<<endl;
- for(int i=0;i<320;i++){
- if(ffinal[i]>=x5 && ffinal[i]<=y5){
- qt[4].qcnt++;
- }
- }
- if(qt[4].qcnt!=0){
- //finding average
- for(int i=0;i<320;i++){
- if(ffinal[i]>=x5 && ffinal[i]<=y5){
- qt[4].qsum+=ffinal[i];
- }
- }
- qt[4].qave=qt[4].qsum/qt[4].qcnt;
- //finding min & max
- for(int i=0;i<320;i++){
- if(ffinal[i]>=x5 && ffinal[i]<=y5){
- if(ffinal[i]<qt[4].qmin){
- qt[4].qmin=ffinal[i];
- }
- if(ffinal[i]>qt[4].qmax){
- qt[4].qmax=ffinal[i];
- }
- }
- }
- //finding standard deviation
- for(int i=0;i<320;i++){
- if(ffinal[i]>=x5 && ffinal[i]<=y5){
- qt[4].qxsum+=((ffinal[i]-qt[4].qave)*(ffinal[i]-qt[4].qave));
- }
- }
- qt[4].qxsum/=(qt[4].qcnt-1);
- qt[4].qsd=sqrt(qt[4].qxsum);
- }
- else{
- qt[4].qave=0;
- qt[4].qsd=0;
- qt[4].qmin=0;
- qt[4].qmax=0;
- }
- cout<<qt[4].qcnt<<" value found"<<endl<<endl;
- cout<<"average = "<<qt[4].qave<<endl;
- cout<<"standard deviation = "<<qt[4].qsd<<endl;
- cout<<"minimum = "<<qt[4].qmin<<endl;
- cout<<"maximum = "<<qt[4].qmax<<endl;
- system("pause");
- system("cls");
- }
- int menu(){
- int pick,ll;
- do{
- ll=0,pick =0;
- cout<<"Choose an option :\n\n1.\tView unfiltered fx value\n2.\tView filtered fx value\n3.\tView in each quantile\n4.\tExit\n";
- cin>>pick;
- if(pick>=1 && pick<=4){
- ll++;}
- else{
- cout<<"You have entered invalid option!\n";
- system("pause");
- }
- system("cls");
- }while(ll<1);
- return pick;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement