# include <iostream>
# include <cmath>
using namespace std;
void help();
//in tabe be onvane help baraye amalgar ha mibashad barname ast;
int fact (float a);
//in tabe factoryel ra hesab mikonad
void error();
//in tabe peyghame khata ra chap mikonad
int main(){
float result,zakhire ,a[50];
char b;
int flag=0,resultint, aint;
for (int i=1; i<50; i++){
    if (i==1) {
        help();
        cout <<"Enter Number:";
        cin>>result;
        i+=1;}
    do{
    do{
    system("cls");
    help();
    cout<<"Last result= "<<result<<endl;
    cout<<"Enter Operator: ";
    cin>>b;
    }while (b!='f' && b!='l'&& b!='z'&& b!='b'&& b!='c'&& b!='+'&& b!='m'&& b!='n'&& b!='-'&& b!='*'&& b!='/'&& b!='o'&& b!='s'&& b!='r'&&b!='q'&& b!='p'&& b!='\\');
    flag=3;
    if (b=='\\'){
                if (result!=floor(result)){
                error();
                flag=2;
                }//end if
               
    }//end if
   
    }while(flag==2); //*/
    switch (b){
    case 'r':
        i=0;
        system("cls");
        continue;
    case 'f':
            result= fact(result);
            continue;
    case 's':
            result=sin(3.1416/(180/result));
            resultint=result*100;
            result=resultint*1./100;           
            continue;
    case 'o':
            result=cos(3.1416/(180/result));
            resultint=result*100;
            result=resultint*1./100;           
            continue;
    case 'm':
            resultint=result;
            if(resultint%180!=90){
                result=3.1416/(180/result);
                result=tan(result);
                resultint=result*100;
                result=resultint*1./100;}//end if
            else
                error();
             continue;
    case 'n':
            resultint=result;
            if(resultint%180!=0){
                result=3.1416/(180/result);
                result=1/(tan(result));
                resultint=result*100;
                result=resultint*1./100;}//end if
            else
                error();
             continue;
    case 'z':
            zakhire=result;           
            continue;
    case 'b':
            result=zakhire;           
            continue;
    case 'l':
            if(result>0)
                result=log10(result);           
            else
                error();
            continue;
    }//end switch
        if (b=='c') break;
//end for*/
       
    system("cls");
    help();
    cout<<"Last result= "<<result<<" "<<b<<endl;
    cout <<"Enter Number:";
    cin>>a[i];
   
    switch(b){
    case '+':
        result+=a[i] ;break;
    case '-':
        result -= a[i]; break;
    case '*':
        result *= a[i]; break;
    case '/':
        if (a[i]==0){
                error();
                break;
            }
        else{
            result/=a[i]; break;}
    case 'p':
        result= pow(result,a[i]); break;
    case 'q':
        result=pow(result, 1/a[i]); break;
    case '\\':
        resultint=result;
        aint=a[i];
            if (a[i]==floor(a[i])){
                result = resultint%aint; break;
                }//end if
            else{
                error();
                break;
                }//end else
    }//end switch
   
}//end for
return 0;
}//end main
void help(){
cout<<"      In the name of God\n\n";
    cout<<"//Created By Sepehr Mohammad\\\\"<<<<endl;
    cout<<"//  Http://cplusprogram.tk  \\\\"<<endl<<endl;
cout<<"HELP:"<<endl;
cout<<"Enter in Operator"<<endl;
cout<<"Close:[c]"<<endl;
cout<<"Reset:[r]"<<endl;
cout<<"Save in Memory:[z]"<<endl;
cout<<"Load from Memory:[b]"<<endl;
cout<<"Plus:[+]    ;example(2+3=5)"<<endl;
cout<<"Subtract:[-]    ;example(5-3=2)"<<endl;
cout<<"Multiply:
[*]    ;example(2*3=6)"<<endl;
cout<<"Division:[/]    ;example(5/2=2.5 $ 5/0=Undefined)"<<endl;
cout<<"Reminder:[\\]    ;example(5\\2=1 $ 5.3\\2.1=Undefined)"<<endl;
cout<<"power:[p]    ;example(2 p 3=8)"<<endl;
cout<<"sqrt:[q]    ;example(8 s 3=2)"<<endl;
cout<<"factorial:[f]    ;example(4f=24)"<<endl;
cout<<"Sin:[s]         ;example(30s=0.5)"<<endl;
cout<<"Cos:[o]         ;example(60o=0.5)"<<endl;
cout<<"tan:[m]         ;example(45m=1)"<<endl;
cout<<"Cot:[n]         ;example(45n=1)"<<endl;
cout<<"log:[l]         ;example(10l=1)"<<endl;
cout<<endl;
}//end help
int fact (float a){
int b=a, result=1;
    for (int i=2; i<=b; i++){
    result*=i;
        }//end for
return result;
}//end fact
void error(){
    system("cls");
    cerr<<endl<<"!!Undefined!!"<<endl<<endl;
    system("pause");
}