📄 main.cpp
字号:
#include "head.h"
void print(SElemType e)
{
printf("%d",e);
}
void main()
{
char choice;
char string[50][MAX_STRING];
double va[50];
for(int i=0;i<50;i++)
va[i]=INT_MAX;
int count=-1;
int count1=-1;
PrintSkin();
char pw[MAX_PASSWORD]="123456";
for(i=0;i<40;i++)
printf(" ");
printf(" 输入密码:");
if(strcmp(pw,getpassword( ))==0)
{
for(i=0;i<42;i++)
printf(" ");
printf("登陆成功!\n");
}
else
{
for(i=0;i<42;i++)
printf(" ");
printf("密码错误!\n");
for(i=0;i<38;i++)
printf(" ");
getch();
exit(0);
}
for(i=0;i<42;i++)
printf(" ");
printf("按任意键继续...");
getch( );
system("cls");
PrintSkin( );
for(i=0;i<35;i++)
printf(" ");
printf("---------------------------------\n");
for(i=0;i<34;i++)
printf(" ");
printf("| 1.表达式求值; 2.进制转换. |\n");
for(i=0;i<35;i++)
printf(" ");
printf("---------------------------------\n");
for(i=0;i<35;i++)
printf(" ");
cin>>choice;
switch(choice)
{
case '1':{
char instring[MAX_STRING];
MakeHashTable( );
PrintTitle( );
printf(" NO.01:");
for(i=0;i<21;i++)
printf(" ");
gets(instring);
while(strlen(instring)!=0)
{
count++;
strcpy(string[count],instring);
if(ProcessExpress(instring))
{
Translate( );
va[count]=EvaluatePostfix();
DispPostfix();getchar();
system("cls");
PrintSkin( );
PrintTitle( );
for(i=0;i<=count;i++)
{
printf(" NO.");
if(i<9)
printf("%d%d",0,i+1);
else
printf("%d",i+1);
printf(":");
for(int j=0;j<21;j++)
printf(" ");
printf("%s",string[i]);
for(j=0;j<int(54-strlen(string[i]));j++)
printf(" ");
if(va[i]==INT_MAX)
printf("ERROR!!");
else
printf("%g",va[i]);
printf("\n");
}
}
printf(" NO.");
if(count<8)
printf("%d%d",0,count+2);
else
printf("%d",count+2);
printf(":");
for(i=0;i<21;i++)
printf(" ");
gets(instring);
}
printf(" --------谢谢使用!--------\n");
for(i=0;i<38;i++)
printf(" ");
getch( );
}
break;
case '2':{
unsigned p=0;
int ii,m,n,nn;
int pp[50],q[50];
char str[50][81],s[50][81];
printf("【编码】 【目标进制】 【原来进制】 【转换数】 【转换结果】\n");
for(ii=0;ii<50;ii++)
{
system("cls");
PrintSkin( );
printf("【编码】 【目标进制】 【原来进制】 【转换数】 【转换结果】\n");
if(ii>0)
{
for(int mm=0;mm<ii;mm++)
{
printf(" NO.");
if(mm<9)
printf("%d%d",0,mm+1);
else
printf("%d",mm+1);
printf(": ");
printf("%d",pp[mm]);
if(pp[mm]<10)
printf(" ");
else
printf(" ");
printf("%d",q[mm]);
if(q[mm]>9)
printf(" ");
else
printf(" ");
printf("%s",str[mm]);
for(int j=0;j<20-(int)strlen(str[mm]);j++)
printf(" ");
printf("%s",s[mm]);
printf("\n");
}
}
printf(" NO.");
if(ii<9)
printf("%d%d",0,ii+1);
else
printf("%d",ii+1);
printf(": ");
scanf("%d",&m);
pp[ii]=m;
system("cls");
PrintSkin( );
printf("【编码】 【目标进制】 【原来进制】 【转换数】 【转换结果】\n");
if(ii>0)
{
for(int mm=0;mm<ii;mm++)
{
printf(" NO.");
if(mm<9)
printf("%d%d",0,mm+1);
else
printf("%d",mm+1);
printf(": ");
printf("%d",pp[mm]);
if(pp[mm]<10)
printf(" ");
else
printf(" ");
printf("%d",q[mm]);
if(q[mm]>9)
printf(" ");
else
printf(" ");
printf("%s",str[mm]);
for(int j=0;j<20-(int)strlen(str[mm]);j++)
printf(" ");
printf("%s",s[mm]);
printf("\n");
}
}
printf(" NO.");
if(ii<9)
printf("%d%d",0,ii+1);
else
printf("%d",ii+1);
printf(": ");
printf("%d",pp[ii]);
if(pp[ii]<10)
printf(" ");
else
printf(" ");
scanf("%d",&n);
q[ii]=n;
if(pp[ii]==0||q[ii]==0)
{
printf(" --------谢谢使用!--------\n");
for(i=0;i<38;i++)
printf(" ");
getch( );
exit(0);
}
system("cls");
PrintSkin( );
printf("【编码】 【目标进制】 【原来进制】 【转换数】 【转换结果】\n");
if(ii>0)
{
for(int mm=0;mm<ii;mm++)
{
printf(" NO.");
if(mm<9)
printf("%d%d",0,mm+1);
else
printf("%d",mm+1);
printf(": ");
printf("%d",pp[mm]);
if(pp[mm]<10)
printf(" ");
else
printf(" ");
printf("%d",q[mm]);
if(q[mm]>9)
printf(" ");
else
printf(" ");
printf("%s",str[mm]);
for(int j=0;j<20-(int)strlen(str[mm]);j++)
printf(" ");
printf("%s",s[mm]);
printf("\n");
}
}
printf(" NO.");
if(ii<9)
printf("%d%d",0,ii+1);
else
printf("%d",ii+1);
printf(": ");
printf("%d",pp[ii]);
if(pp[ii]<10)
printf(" ");
else
printf(" ");
printf("%d",q[ii]);
if(q[ii]>9)
printf(" ");
else
printf(" ");
scanf("%s",str[ii]);
system("cls");
PrintSkin( );
printf("【编码】 【目标进制】 【原来进制】 【转换数】 【转换结果】\n");
if(ii>0)
{
for(int mm=0;mm<ii;mm++)
{
printf(" NO.");
if(mm<9)
printf("%d%d",0,mm+1);
else
printf("%d",mm+1);
printf(": ");
printf("%d",pp[mm]);
if(pp[mm]<10)
printf(" ");
else
printf(" ");
printf("%d",q[mm]);
if(q[mm]>9)
printf(" ");
else
printf(" ");
printf("%s",str[mm]);
for(int j=0;j<20-(int)strlen(str[mm]);j++)
printf(" ");
printf("%s",s[mm]);
printf("\n");
}
}
printf(" NO.");
if(ii<9)
printf("%d%d",0,ii+1);
else
printf("%d",ii+1);
printf(": ");
printf("%d",pp[ii]);
printf(" ");
printf("%d",q[ii]);
if(q[ii]>9)
printf(" ");
else
printf(" ");
printf("%s",str[ii]);
for(int j=0;j<20-(int)strlen(str[ii]);j++)
printf(" ");
for(int k=strlen(str[ii])-1,l=0;k>=0;k--,l++)
{
switch(str[ii][l]){
case '0':
p=p;
break;
case '1':
p=p+(int)pow(n,k);
break;
case '2':
p=p+2*(int)pow(n,k);
break;
case '3':
p=p+3*(int)pow(n,k);
break;
case '4':
p=p+4*(int)pow(n,k);
break;
case '5':
p=p+5*(int)pow(n,k);
break;
case '6':
p=p+6*(int)pow(n,k);
break;
case '7':
p=p+7*(int)pow(n,k);
break;
case '8':
p=p+8*(int)pow(n,k);
break;
case '9':
p=p+9*(int)pow(n,k);
break;
case 'A':
p=p+10*(int)pow(n,k);
break;
case 'B':
p=p+11*(int)pow(n,k);
break;
case 'C':
p=p+12*(int)pow(n,k);
break;
case 'D':
p=p+13*(int)pow(n,k);
break;
case 'E':
p=p+14*(int)pow(n,k);
break;
case 'F':
p=p+15*(int)pow(n,k);
break;
}
}
SqStack S;
SElemType e;
InitStack(S);
while(p){
Push(S,p%m);
p=p/m;
}
nn=-1;
while(!StackEmpty(S)){
nn++;
Pop(S,e);
if(e<=9)
{
print(e);
s[ii][nn]=(char)'0'+e;
}
else
{
printf("%c",e-10+65);
s[ii][nn]=(char)e+55;
}
}
s[ii][++nn]='\0';
printf("\n");
DestroyStack(S);
}
}
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -