ارجوكم اريد شرح عن كيفية عمل flow chart لبرنامج في C++ البرنامج يحتوي على
1/class اريد ان اعرف كيف نمثلها في flow chart
2/ if -for-do while
وهذا هو البرنامج
#include <conio.h>
#include <process.h>
#include <iostream.h>
class Calculator
{
private:
float num1,num2;
float answer;
char ch,op;
char fname[10];
public:
float Add(float num1,float num2)
{
float result=num1+num2; return result;
}
float Sub(float num1,float num2)
{
float result=num1-num2; return result;
}
float Mlt(float num1,float num2)
{
float result=num1*num2; return result;
}
float Div(float num1,float num2)
{
float result=num1/num2; return result;
}
void ShowData()
{
cout<<"\n function name"<<fname<<"the answer is"<<answer;}
virtual float GetAns(char cname)
};
float Calculator::GetAns(char cname)
{
int n1,n2;
Calculator calc;
cout<<"enter function name:";
cin>>fname;
cout<<"enter first number,opreat,second number";
cin>>n1>>op>>n2;
switch (op)
{
case'+':{answer=calc.Add(n1,n2);break;}
case'-':{answer=calc.Sub(n1,n2);break;}
case'*':{answer=calc.Mlt(n1,n2);break;}
case'/':{answer=calc.Div(n1,n2);break;}
}
cout<<"the answer is "<<answer;
if(cname=='r')
{
cout<<"\n Regular Calculation";
return answer;
}
return answer;
}
class ScienceCalc:public Calculator
{
public:
float square(float n1)
{float result=n1*n1; return result;}
double power(float n,int t)
{
double result=1.0;
for(int j=0;j<t;j++)
result*=n; return result;
}
double squaret(float n1);
void virtual ShowData()
{
Calculator::ShowData();
}
float GetAns(char cname);
};
float ScienceCalc::GetAns(char cname)
{
float prvans,k;
double answer;
char op;
ScienceCalc calc;
prvans=Calculator::GetAns(cname);
cout<<"\n would you like to perform square Square_Root,Power calculation(y/n):";
cin>>op;
if(op=='n')
{ cout<<"the answer is ";return prvans;}
if(op=='s')
{answer=calc.square(prvans);}
else if (op=='t')
{ answer=calc.squaret(prvans);}
}
cout<<"\n the answer is "<<answer;
return answer;
}
float ScienceCalc::Square(int n)
{
float s=0;
for(double j=0;j<19;j++)
{
s=j*j;
if(s==n)
{
cout<<"The sqrt of "<<s<<"="<<j<<endl;
break;
}
if(s>n)//s=5
{
for(double i=0.0;i<1.0;i+=0.1) //incr the 1st digit 16.1
{ //0.1 <0.9
s=j-1; //5-1=4
s=s+i; //s=4.0
double h=s*s;//h=16.0
if(h<n) //16.0<17
{
for(double q=0.01;q<0.1;q=0.01) //incr the2st digit 16.1
{ //h=n 2nd 0.09
s=s+q; //s=4.10
double m=s*s; //m=16.81 until 4.13*4.13=17.056
if(m>n) //17.056>17
{
s=s-0.01;//Rang of 4.12
for(double x=0.001;x<0.01;x=0.001)
{ //x=0.001;m=n
s=s+x; //4.121
double y=s*s;
if(y>n)
{
s=s-0.001;
for(double b=0.0001;b<0.001;b=0.0001)
{
s=s+b ;
double z=s*s;
return s;
} //for the 4th digit
}//if y>n
}//for third digit
}//if m>n
}//for second digit
}//if h<n
}//for 1st digit
}//if s>n
}//for 1to n
}//sqrt function
class StatisticCalc:public ScienceCalc
{
public:
float mean(s)
{
float ans;
ans=(s/float(3));
cout<<endl<<"mean="<<ans<<endl;
return ans;
}
float variance(float s,float n)
{
float ans;
float a=s-n;
ans=ScienceCalc::square(a);
cout<<"Varianve="<<ans<<endl;
return ans;
}
float standvar(float s)
{
float ans;
ans =ScienceCalc::squaret(s);
cout<<"standvar="<<ans<<endl;
return ans;
}
float GetAns(char cname);
};
float StatisticCalc::GetAns(char cname)
{
float prvans,k,answer;
char op;
StatisticCalc calc;
prvans= ScienceCalc::GetAns(cname);
if(cname=='s')
{
float amean=calc.mean(prvans);
float vari=calc.variance(prvans,amean);
float sd=calc.standvar(vari);
cout<<"statical class \n"<<cname; cin>>k;
cout<<"statistics Calculation mean="<<amean;
}
return prvans;
}
void main()
{
int n=0,numb,j;
char ch;
float answer ;
char fname;
Calculator acalc;
ScienceCalc scalc;
StatisticCalc tcalc;
Calculator* aptr;
aptr=&tcalc;
cout<<"enter the type of calculation"<<endl;
cout<<"press 'r' for regular calcultor"<<endl;
cout<<"press 's' for statical calcultor"<<endl;
cout<<"press 'c' for scientific calcultor"<<endl;
cin>>fname;
do
{
answer=aptr->GetAns(fname);
cout<<"answer is"<<answer<<endl<<endl;
cout<<"\n\n Do anthor(y/n):";
ch=getche();
}
while (ch!='n')
}
