?? main.cpp
字號:
case 'a':
{
char buffer[30];
strcpy(buffer,o1.outputDEC().c_str());
n=atoi(buffer);
return an(n);
}break;
case 'n':
{
char buffer[30];
strcpy(buffer,o1.outputDEC().c_str());
nn=_atoi64(buffer);
nn=prime(nn);
_ui64toa(nn,buffer,10);
string result=buffer;
return result;
}
}
break;
}//case 2
case 3:
{
// cout<<endl<<endl<<"請輸入操作計算式子 :"<<endl<<endl;
// cin>>str;
int j=0;
if(str[i]=='v'||str[i]=='V')
{
i+=3;
while(i<strlen(str))
{
if(str[i]>=int('0')&&str[i]<=int('9'))varbuf[j++]=str[i++];
else break;
}
varbuf[j]='\0';
int varint=atoi(varbuf);
o1=VAR[varint];
}
else if(str[i]=='e'||str[i]=='E')
{
i+=3;
while(i<strlen(str))
{
if(str[i]>=int('0')&&str[i]<=int('9'))varbuf[j++]=str[i++];
else break;
}
varbuf[j]='\0';
int varint=atoi(varbuf);
o1=EXP[varint];
}
else
{
while(i<strlen(str))
{
if(str[i]>=int('0')&&str[i]<=int('9'))str1[i]=str[i++];
else break;
}
str1[i]='\0';
p1=str1;
o1.loadDEC(p1);
}
j=0;
while(i<strlen(str))
{
if(((str[i]<int('0')||str[i]>int('9'))&&str[i]!='m'&&str[i]!='M')&&str[i]!='v'&&str[i]!='V'&&str[i]!='e'&&str[i]!='E')c[j++]=str[i++];
else break;
}
c[j]='\0';
if(str[i]=='m'||str[i]=='M')inverse=1;
if(inverse==0)
{
j=0;
if(str[i]=='v'||str[i]=='V')
{
i+=3;
while(i<strlen(str))
{
if(str[i]>=int('0')&&str[i]<=int('9'))varbuf[j++]=str[i++];
else break;
}
varbuf[j]='\0';
int varint=atoi(varbuf);
o2=VAR[varint];
}
else if(str[i]=='e'||str[i]=='E')
{
i+=3;
while(i<strlen(str))
{
if(str[i]>=int('0')&&str[i]<=int('9'))varbuf[j++]=str[i++];
else break;
}
varbuf[j]='\0';
int varint=atoi(varbuf);
o2=EXP[varint];
}
else
{
while(i<strlen(str))
{
if(str[i]>=int('0')&&str[i]<=int('9'))str2[j++]=str[i++];
else break;
}
str2[j]='\0';
p2=str2;
o2.loadDEC(p2);
}
}
while(str[i]!='d'&&str[i]!='D')
i++;
i++;
j=0;
if(str[i]=='v'||str[i]=='V')
{
i+=3;
while(i<strlen(str))
{
if(str[i]>=int('0')&&str[i]<=int('9'))varbuf[j++]=str[i++];
else break;
}
varbuf[j]='\0';
int varint=atoi(varbuf);
o3=VAR[varint];
}
else if(str[i]=='e'||str[i]=='E')
{
i+=3;
while(i<strlen(str))
{
if(str[i]>=int('0')&&str[i]<=int('9'))varbuf[j++]=str[i++];
else break;
}
varbuf[j]='\0';
int varint=atoi(varbuf);
o3=EXP[varint];
}
else
{
while(i<strlen(str))
{
if(str[i]>=int('0')&&str[i]<=int('9'))str3[j++]=str[i++];
else break;
}
str3[j]='\0';
p3=str3;
//cout<<str1<<c<<str2<<endl;
o3.loadDEC(p3);
}
cout<<endl<<endl<<str;
if(str[strlen(str)-1]!='=')cout<<"=";
switch(c[0])
{
case '*':
result=BImodmul2(o1,o2,o3);
//cout<<endl<<"是否要存儲結果? "<<result.outputDEC()<<endl;
//cin>>yes;
//if(yes=='y'||yes=='Y')
{
EXP[markexp%20]=result;
//cout<<endl<<"已存儲結果為:EXP"<<markexp<<"="<<result.outputDEC()<<endl;
markexp++;
}
_itoa((markexp-1)%20,tmp,10);
return result.outputDEC()+"已設置EXP"+tmp+"="+EXP[(markexp-1)%20].outputDEC();
break;
case '/':
result=Remainder(o1,o2,remainder);
result=BImodmul2(result,Ones,o3);
remainder=BImodmul2(remainder,Ones,o3);
//cout<<endl<<"是否要存儲結果? "<<result.outputDEC()<<endl;
//cin>>yes;
//if(yes=='y'||yes=='Y')
{
EXP[markexp%20]=result;
//cout<<endl<<"已存儲結果為:EXP"<<markexp<<"="<<result.outputDEC()<<endl;
markexp++;
// cout<<endl<<"是否要存儲余數?"<<result.outputDEC()<<endl;
//cin>>yes;
//if(yes=='y'||yes=='Y')
{
EXP[markexp%20]=result;
// cout<<endl<<"已存儲余數為:EXP"<<markexp<<"="<<result.outputDEC()<<endl;
markexp++;
}
_itoa((markexp-1)%20,tmp,10);
return result.outputDEC()+"..."+remainder.outputDEC()+"已設置EXP"+tmp+"="+EXP[(markexp-1)%20].outputDEC();
}
break;
case '^':
result=BImodexp(o1,o2,o3);
//cout<<endl<<"是否要存儲結果? "<<result.outputDEC()<<endl;
//cin>>yes;
//if(yes=='y'||yes=='Y')
{
EXP[markexp%20]=result;
//cout<<endl<<"已存儲結果為:EXP"<<markexp<<"="<<result.outputDEC()<<endl;
markexp++;
}
_itoa((markexp-1)%20,tmp,10);
return result.outputDEC()+"已設置EXP"+tmp+"="+EXP[(markexp-1)%20].outputDEC();
break;
case '+':
{
result=o1+o2;
result=BImodmul2(result,Ones,o3); //由于沒有模加,只能用與一相乘在模
//cout<<endl<<"是否要存儲結果? "<<result.outputDEC()<<endl;
//cin>>yes;
//if(yes=='y'||yes=='Y')
{
EXP[markexp%20]=result;
//cout<<endl<<"已存儲結果為:EXP"<<markexp<<"="<<result.outputDEC()<<endl;
markexp++;
}
_itoa((markexp-1)%20,tmp,10);
return result.outputDEC()+"已設置EXP"+tmp+"="+EXP[(markexp-1)%20].outputDEC();
break;
}
case '-':
if(inverse==0)
{
result=o1-o2;
result=BImodmul2(result,Ones,o3); //由于沒有模減,只能用與一相乘在模
//cout<<endl<<"是否要存儲結果? "<<result.outputDEC()<<endl;
//cin>>yes;
//if(yes=='y'||yes=='Y')
{
EXP[markexp%20]=result;
//cout<<endl<<"已存儲結果為:EXP"<<markexp<<"="<<result.outputDEC()<<endl;
markexp++;
}
_itoa((markexp-1)%20,tmp,10);
return result.outputDEC()+"已設置EXP"+tmp+"="+EXP[(markexp-1)%20].outputDEC();
break;
}
else if(inverse==1)
{
result=BIinverse(o1,o3);
//cout<<endl<<"是否要存儲結果? "<<result.outputDEC()<<endl;
//cin>>yes;
//if(yes=='y'||yes=='Y')
{
EXP[markexp%20]=result;
//cout<<endl<<"已存儲結果為:EXP"<<markexp<<"="<<result.outputDEC()<<endl;
markexp++;
}
}
_itoa((markexp-1)%20,tmp,10);
return result.outputDEC()+"已設置EXP"+tmp+"="+EXP[(markexp-1)%20].outputDEC();
}
break;
}//case 3
case 4:
inputvar="已設置VAR";
inputvar+=input(str);
return inputvar;
break;
case 5:
helpfile=help();
return helpfile;
break;
}//switch select
//goto restart;
return "";
}
string help()
{
string result="\0";
result=" 聲明:操作數和結果不能出現負數 ";
result+=" BY Ghost Prince ";
result+=" 1 雙操作數運算 + - * / % ^ == != > < <<= >>= ";
result+=" 符號 功能 輸入例子 結果 ";
result+=" + : result=p1+p2 1+2= 3 ";
result+=" - : result=p1-p2 2-1= 1 ";
result+=" * : result=p1*p2 2*3= 6 ";
result+=" / : result=p1/p2 6/2= 3 ";
result+=" % : result=p1%p2 3%9= 3 ";
result+=" ^ : result=p1^p2 2^3= 8 ";
result+=" == : BOOL=p1==p2 2==4= 0 ";
result+=" != : BOOL=p1!=p2 1!=9= 1 ";
result+=" > : BOOL=p1>p2 6>4= 1 ";
result+=" < : BOOL=p1<p2 6<4= 0 ";
result+=" <<= : result=p1*(2^p2) 6<<=1= 12 ";
result+=" >>= : result=p1/(2^p2) 6>>=1= 3 ";
result+=" ~ : result=gcd(p1,p2) 6~8= 2 ";
result+=" 2 單操作數運算 ++ -- ";
result+=" ++ : result=p1+1 6++= 7 ";
result+=" -- : result=p1-1 6--= 5 ";
result+=" a : result=p1的本原元 25a 2 3 8 12 13 17 22 23 ";
result+=" n : result=p1歐拉函數 10n 4 ";
result+=" 3 三操作數運算 模+ 模- 模* 模/ 模^ 求逆- ";
result+=" 模+ : result=(p1+p2)mod(p3) 2+4mod7= 6 ";
result+=" 模- : result=(p1-p2)mod(p3) 6-4mod7= 2 ";
result+=" 模* : result=(p1*p2)mod(p3) 2*4mod7= 1 ";
result+=" 模/ : result=(p1/p2)mod(p3) 6/3mod7= 2 ";
result+=" 模^ : result=(p1^p2)mod(p3) 2^3mod7= 1 ";
result+=" 求逆-: result=(p1的逆)mod(p3) 3-mod5= 2 ";
result+=" 4 多操作數運算 ";
result+=" 中國剩余定理: (輸入例子,后面一定要加=號) x=1mod2 x=2mod3 x=3mod5= 23 ";
return result;
}
string input(char *buf)
{
char name[20]="VAR";
//int i=1;
char mark[3];
string result;
//char buf[5000]="\0";
char temp[5];
//cout<<endl<<endl<<"請輸入變量對應的大整數:"<<endl<<endl;
//while(i)
//{
strcpy(name,"VAR");
_itoa(markvar%20,mark,10);
strcat(name,mark);
//cout<<name<<"=";
//cin>>buf;
if(buf[0]!='-')
{
string c=buf;
VAR[markvar%20].setZero();
VAR[markvar%20].loadDEC(c);
cout<<"你已經設置"<<name<<"="<<VAR[markvar%20].outputDEC()<<endl<<endl;
_itoa(markvar,temp,10);
result=temp;
result+="=";
result+=VAR[markvar%20].outputDEC();
markvar++;
return result;
}
//else i=0;
//}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -