در این قسمت توابع کتابخانه ای برنامه آورده شده است
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
#include<stdlib.h>
#include<math.h>
/********************* functions *********************/
long double answer(long double [],char);
void print_chart(long double);
void check(char *[],int *,char *,char);
/*****************************************************/
آغاز تابع اصلی برنامه
void main()
{
refresh:
int place=0,flag,n=0;
long double c[2]={0};
char f,st[20]; //f is a function
در این قسمت علایم و کاراکترهای مورد استفاده برنامه تعریف شده است
char *func[16]={“+”,”-“,”*”,”/”,”%”,”r”,”s”,”c”,”p”,”L”,”l”,”t”,”e”,”!”,”i”,”A”};
print_chart(0);
for(int k=0;k<20;k++)
st[k]=NULL;
for(;;)
{
st[n]=getch();
check(func,&flag,&f,st[n]);
if(flag==1)
{
c[place]=atof(st);
print_chart(c[place]);
n++;
}
else if(flag==0)
{
if(f==’A’) //A refresh calculator
goto refresh;
در این قسمت علایم و کاراکترهای مورد استفاده برنامه تعریف شده است
else if(f==’+’||f==’-‘||f==’s’||f==’c’||f==’r’||f==’e’||f==’!’|| f==’t’||f==’L’||f==’l’||f==’i’)
c[1]=0;
else if(f==’p’|| f==’*’ || f==’/’)
c[1]=1;
c[0]=answer(c,f);
print_chart(c[0]);
place=1;
n=0;
for(int i=0;i<20;i++)
st[i]=NULL;
}
else if(flag==2)
{
c[0]=answer(c,f);
print_chart(c[0]);
}
}
}
/*********************************** check function ***********************************/
void check(char *func[12],int *flag,char *f,char number)
{
for(int i=0;i<16;i++)
{
if(number==*func[i])
{
*flag=0;
*f=*func[i];
return;
}
else if(number==char(13))
{
*flag=2;
return;
}
else if(number>47 && number<58 || number==’.’)
{
*flag=1;
return;
}
}
*flag=3;
}
/*************************** return Answer of functions ******************************/
در قسمت زیر شرطهای انتخاب یک عملگر توسط کاربر تعیین شده است و تابع مورد نظر آن فراخوانی می گردد .
long double answer(long double c[],char f)
{
long double d=c[0];
if(f==char(13))
return d;
switch(f)
{
case ‘+’:
d=c[0]+c[1];
break;
case ‘-‘:
d=c[0]-c[1];
break;
case ‘*’:
d=c[0]*c[1];
break;
case ‘/’:
d=c[0]/c[1];
break;
case ‘%’:
d=int(c[0])%int(c[1]);
break;
case ‘r’:
d=sqrt(c[0]);
break;
case ‘s’:
d=floor(sin(c[0]*.017452)*1000+.5)/1000;
break;
case ‘c’:
d=floor(cos(c[0]*.017452)*1000+.5)/1000;
break;
case ‘L’:
d=log(c[0]);
break;
case ‘l’:
d=log10(c[0]);
break;
case ‘p’:
d=pow(c[0],c[1]);
break;
case ‘t’:
d=floor(tan(c[0]*.017452)*1000+.5)/1000;
break;
case ‘e’:
d=exp(c[0]);
break;
case ‘!’:
{
d=1;
for(int i=1;i<=c[0];i++)
d=d*i;
}
break;
case ‘i’:
d=1/c[0];
break;
}
return d;
}
|
دیدگاهتان را بنویسید