+0.1ios
增長了彩蛋windows
+0.0.2app
1:添加了titleide
2:添加了錯誤音響this
#include <cstdio> #include <windows.h> #include <cmath> #include <conio.h> #include <stack> #include <cstring> #include <queue> #include <ctime> #include <iostream> #include <algorithm> const HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE); char ly,a[101]; struct Node1 { double a,b; Node1 () {} Node1 (const double sa,const double sb) { this->a=sa;this->b=sb; } }; struct Node2 { double a,b,c; Node2 () {} Node2 (const double sa,const double sb,const double sc) { this->a=sa;this->b=sb;this->c=sc; } }; struct DC { double a; char b; DC () {} DC (const double sa,const char sb) { this->a=sa;this->b=sb; } }; void Home () ; void Ads () ; void Guangbiaoxy (int x,int y); void Guangbiaohide (); void Jie11 (); void Jie21 (); void Jie110 (); void Sb (); void Sbegin (int speed) ; void User (); void Law (bool bl); int Shu (char s); void Calc11 (double &a,double &b,std::queue <DC> &q); void Calc21 (double &a,double &b,double &c,std::queue <DC> &q); void Hua (const int &head,const int &tail,std::queue <DC> &q); int main () { system("mode con cols=50 lines=15"); system("color 71"); system("title 解方程"); Guangbiaohide(); Ads(); return 0; Home(); return 0; } void Ads () { for(int i=1;i<=5;++i) { Guangbiaoxy(2,i);printf("█"); Guangbiaoxy(10,i);printf("█"); Guangbiaoxy(26,i);printf("█"); Guangbiaoxy(34,i);printf("█"); Guangbiaoxy(42,i);printf("█"); Guangbiaoxy(i*2,3);printf("█"); Guangbiaoxy(12+i*2,1);printf("█"); Guangbiaoxy(12+i*2,5);printf("█"); Guangbiaoxy(24+i*2,1);printf("█"); Guangbiaoxy(24+i*2,5);printf("█"); Guangbiaoxy(36+i*2,1);printf("█"); Guangbiaoxy(36+i*2,5);printf("█"); } Guangbiaoxy(20,2);printf("█"); Guangbiaoxy(18,3);printf("█"); Guangbiaoxy(16,4);printf("█"); Guangbiaoxy(20,7);printf("請把輸入法換到英文模式"); Guangbiaoxy(20,9);printf("加載中 v0.5.3"); Sleep(314); } void Guangbiaoxy(int x,int y) { COORD pos = {x,y}; SetConsoleCursorPosition(handle,pos); } void Guangbiaohide() { CONSOLE_CURSOR_INFO Guangbiao; GetConsoleCursorInfo(handle,&Guangbiao); Guangbiao.bVisible = 0; SetConsoleCursorInfo(handle,&Guangbiao); } void Home () { system("cls"); Guangbiaoxy(22,1); printf("解方程"); Guangbiaoxy(18,3); printf("按a:一元一次"); Guangbiaoxy(18,5); printf("按b:二元一次"); Guangbiaoxy(18,7); printf("按c:一元一次不等式"); Guangbiaoxy(18,9); printf("按d:用戶須知"); label: ly=getch(); switch (ly) { case 'a' : Jie11(); break; case 'b' : Jie21(); break; case 'c' : Jie110(); break; case 'd' : User(); break; default : Sb(); goto label; } } void Sb () { Guangbiaoxy(3,14);printf("\a輸入錯誤"); } void Jie11 () { system("cls"); int alen,dengyu=1; Guangbiaoxy(0,1);printf("請輸入方程\n"); memset(a,0,sizeof(a)); scanf("%s",a+1); alen=strlen(a+1); if(!strcmp(a+1,"iamhappy")) Sbegin(500); for(int i=1;i<=alen;i++) { if(a[i]=='=') { dengyu=i;break; } } std::queue <DC> q; double la,lb,ra,rb; Hua(1,dengyu-1,q); Calc11(la,lb,q); Hua(dengyu+1,alen,q); Calc11(ra,rb,q); if(la-ra==0) printf("此方程無解"); else printf("x=%g",(rb-lb)*1.0/(la-ra)); label: Guangbiaoxy(0,5);printf("q:返回\n"); Guangbiaoxy(0,6);printf("w:重來\n"); ly=getch(); switch (ly) { case 'q' : Home(); break; case 'w' : Jie11(); break; default : Sb(); goto label; } } void Jie21 () { system("cls"); int alen,dengyu=1; Guangbiaoxy(0,1);printf("請輸入方程1:\n"); memset(a,0,sizeof(a)); scanf("%s",a+1); alen=strlen(a+1); for(int i=1;i<=alen;i++) { if(a[i]=='=') { dengyu=i;break; } } std::queue <DC> q; double la1,lb1,lc1,ra1,rb1,rc1; double a1,a2,b1,b2,c1,c2; Hua(1,dengyu-1,q); Calc21(la1,lb1,lc1,q); Hua(dengyu+1,alen,q); Calc21(ra1,rb1,rc1,q); a1=la1-ra1; b1=lb1-rb1; c1=lc1-rc1; Guangbiaoxy(0,3);printf("請輸入方程2:\n"); memset(a,0,sizeof(a)); scanf("%s",a+1); alen=strlen(a+1); for(int i=1;i<=alen;i++) { if(a[i]=='=') { dengyu=i;break; } } Hua(1,dengyu-1,q); Calc21(la1,lb1,lc1,q); Hua(dengyu+1,alen,q); Calc21(ra1,rb1,rc1,q); a2=la1-ra1; b2=lb1-rb1; c2=lc1-rc1; double T,Tx,Ty; T=b1*a2-a1*b2; if(T==0) printf("此方程無解"); else { Tx=c2*a1-c1*a2; Ty=c1*b2-c2*b1; printf("x=%g\n",Tx*1.0/T); printf("y=%g\n",Ty*1.0/T); } label: Guangbiaoxy(0,8);printf("q:返回\n"); Guangbiaoxy(0,9);printf("w:重來\n"); ly=getch(); switch (ly) { case 'q' : Home(); break; case 'w' : Jie21(); break; default : Sb(); goto label; } } void Jie110 () { system("cls"); int alen,dengyu=1; Guangbiaoxy(0,1);printf("請輸入方程\n"); memset(a,0,sizeof(a)); scanf("%s",a+1); alen=strlen(a+1); bool bl; int bol; for(int i=1;i<=alen;++i) { if(a[i]=='<') { dengyu=i; bl=0; if(a[i+1]=='=') bol=2; else bol=1; break; } if(a[i]=='>') { dengyu=i; bl=1; if(a[i+1]=='=') bol=2; else bol=1; break; } } std::queue <DC> q; double la,lb,ra,rb; Hua(1,dengyu-1,q); Calc11(la,lb,q); Hua(dengyu+bol,alen,q); Calc11(ra,rb,q); // std::cout<<ra<<" "<<rb<<" "<<la<<" "<<lb; if(la-ra==0) printf("此方程無解"); else { printf("x"); if(la-ra<0) { if(bl==1) bl=0; else bl=1; } if(bl==1) printf(">"); else printf("<"); if(bol==2) printf("="); printf("%g",(rb-lb)*1.0/(la-ra)); } label: Guangbiaoxy(0,5);printf("q:返回\n"); Guangbiaoxy(0,6);printf("w:重來\n"); ly=getch(); switch (ly) { case 'q' : Home(); break; case 'w' : Jie110(); break; default : Sb(); goto label; } } void Hua (const int &head,const int &tail,std::queue <DC> &q) { std::stack <char> s; int x=head,add=0; bool pm=0; while(x<=tail) { int shux=Shu(a[x]); if(a[x]>='0' && a[x]<='9') { double temp=0; while(x<=tail && a[x]>='0' && a[x]<='9') { temp=temp*10+a[x]-'0'; ++x; } if(a[x]=='.') { ++x; while(x<=tail && a[x]>='0' && a[x]<='9') { temp=(temp*10+a[x]-'0')*0.1; ++x; } } if(pm==1) { q.push(DC(-temp,0)); pm=0; } else q.push(DC(temp,0)); if(Shu(a[x])==0) { if(pm==1) { add=-temp; pm=0; } else add=temp; } continue; } else if(shux==0) { if(pm==1){ q.push(DC(0,-a[x])); pm=0; } else q.push(DC(0,a[x])); if(add!=0) { q.push(DC(0,'*')); add=0; } } else if(shux==1) s.push(a[x]); else if(shux==3) { if(a[x]=='-' && (a[x-1]<'0' || a[x-1]>'9') && a[x-1]!='x' && a[x-1]!='y') { pm=1; ++x; continue; } while(!s.empty() && Shu(s.top())>=3) { q.push(DC(0,s.top())); s.pop(); } s.push(a[x]); } else if(shux==4) { while(!s.empty() && Shu(s.top())==4) { q.push(DC(0,s.top())); s.pop(); } s.push(a[x]); } else if(shux==2) { while(!s.empty() && s.top()!='(') { q.push(DC(0,s.top())); s.pop(); } s.pop(); } ++x; } while(!s.empty()) { q.push(DC(0,s.top())); s.pop(); } } int Shu (char s) { if(s=='+' || s=='-') return 3; if(s=='/' || s=='*') return 4; if(s=='(') return 1; if(s==')') return 2; if(s=='x' || s=='y') return 0; return -1; } void Calc21 (double &a,double &b,double &c,std::queue <DC> &q) { std::stack <Node2> s; while(!q.empty()) { if(q.front().b==0) { s.push(Node2(0,0,q.front().a)); } else if(q.front().b==120) { s.push(Node2(0,1,0)); } else if(q.front().b==-120) { s.push(Node2(0,-1,0)); } else if(q.front().b==121) { s.push(Node2(1,0,0)); } else if(q.front().b==-121) { s.push(Node2(-1,0,0)); } else if(q.front().b=='+') { Node2 tempa,tempb; tempa.a=s.top().a; tempa.b=s.top().b; tempa.c=s.top().c; s.pop(); tempb.a=s.top().a; tempb.b=s.top().b; tempb.c=s.top().c; s.pop(); s.push(Node2(tempa.a+tempb.a,tempa.b+tempb.b,tempa.c+tempb.c)); } else if(q.front().b=='-') { Node2 tempa,tempb; tempa.a=s.top().a; tempa.b=s.top().b; tempa.c=s.top().c; s.pop(); tempb.a=s.top().a; tempb.b=s.top().b; tempb.c=s.top().c; s.pop(); s.push(Node2(tempb.a-tempa.a,tempb.b-tempa.b,tempb.c-tempa.c)); } else if(q.front().b=='*') { Node2 tempa,tempb; tempa.a=s.top().a; tempa.b=s.top().b; tempa.c=s.top().c; s.pop(); tempb.a=s.top().a; tempb.b=s.top().b; tempb.c=s.top().c; s.pop(); s.push(Node2(tempa.a*tempb.c+tempb.a*tempa.c,tempa.b*tempb.c+tempb.b*tempa.c,tempa.c*tempb.c)); } else if(q.front().b=='/') { Node2 tempa,tempb; tempa.a=s.top().a; tempa.b=s.top().b; tempa.c=s.top().c; s.pop(); tempb.a=s.top().a; tempb.b=s.top().b; tempb.c=s.top().c; s.pop(); s.push(Node2(tempb.a/tempa.c,tempb.b/tempa.c,tempb.c/tempa.c)); } q.pop(); } a=s.top().a; b=s.top().b; c=s.top().c; s.pop(); } void Calc11 (double &a,double &b,std::queue <DC> &q) { std::stack <Node1> s; while(!q.empty()) { if(q.front().b==0) { s.push(Node1(0,q.front().a)); } else if(q.front().b==120) { s.push(Node1(1,0)); } else if(q.front().b==-120) { s.push(Node1(-1,0)); } else if(q.front().b=='+') { Node1 tempa,tempb; tempa.a=s.top().a; tempa.b=s.top().b; s.pop(); tempb.a=s.top().a; tempb.b=s.top().b; s.pop(); s.push(Node1(tempa.a+tempb.a,tempa.b+tempb.b)); } else if(q.front().b=='-') { Node1 tempa,tempb; tempa.a=s.top().a; tempa.b=s.top().b; s.pop(); tempb.a=s.top().a; tempb.b=s.top().b; s.pop(); s.push(Node1(tempb.a-tempa.a,tempb.b-tempa.b)); } else if(q.front().b=='*') { Node1 tempa,tempb; tempa.a=s.top().a; tempa.b=s.top().b; s.pop(); tempb.a=s.top().a; tempb.b=s.top().b; s.pop(); s.push(Node1(tempa.a*tempb.b+tempa.b*tempb.a,tempa.b*tempb.b)); } else if(q.front().b=='/') { Node1 tempa,tempb; tempa.a=s.top().a; tempa.b=s.top().b; s.pop(); tempb.a=s.top().a; tempb.b=s.top().b; s.pop(); s.push(Node1(tempb.a/tempa.b,tempb.b/tempa.b)); } q.pop(); } a=s.top().a; b=s.top().b; s.pop(); } void Law () { } void User () { system("cls"); Guangbiaoxy(0,1); printf("本程序無鼠標操做,一切按提示輸入,英文輸入法最佳\n"); printf("不安提示輸入,後果自負\n"); printf("注意:\n<= 是小於等於 >= 是大於等於 *是乘 /是除以\n"); printf("一元未知數只能是x,二元未知數只能是x和y\n"); printf("只能有(),無{}[]\n"); printf("不能是分式\n"); printf("做者:LaoYin_X \n"); printf("聯繫:https://www.cnblogs.com/Srand-X/\n"); label: Guangbiaoxy(0,11);printf("q:返回\n"); Guangbiaoxy(0,12);printf("w:重來\n"); ly=getch(); switch (ly) { case 'q' : Home(); break; case 'w' : User(); break; default : Sb(); goto label; } } void Sbegin (int speed) { srand(time(NULL)); system("mode con cols=80 lines=42"); system("color 06"); system("title 貪吃蛇"); MessageBox(NULL,TEXT("版權由LaoYin_X享有\n(和本做者是一我的)\n聯繫:https://www.cnblogs.com/Srand-X/"),"用戶提示",MB_OKCANCEL); Guangbiaohide(); for (int i=0;i<80;++i) { Guangbiaoxy(i,40); printf("-"); } Guangbiaoxy(0,41);printf("w:上 s:下 a:左 d:右 r:返回 e:暫停 q:開始 p:速度 滿屏時勝利 做者:LaoYin_X"); // int direction=4;//1:w 2:s 3:a 4:d int da=0,result=0; int dir[5][2]={0,0,0,-1,0,1,-1,0,1,0}; bool goon=0;//1:e 0:q char Sn=0; bool Map[40][40]={}; Map[1][0]=Map[0][0]=1; std::queue <int> qx; std::queue <int> qy; qx.push(1); qy.push(0); qx.push(0); qy.push(0); Guangbiaoxy(0,0);printf("█"); Guangbiaoxy(2,0);printf("█"); int newx=19,newy=19; Guangbiaoxy(38,19); printf("█"); time_t t1=clock(); while(1) { label: if(_kbhit()) { Sn=getch(); switch (Sn) { case 'r' : Sbegin(speed); break; case 'e' : goon=1; break; case 'q' : goon=0; break; case 'w' : if(direction!=2) direction=1; break; case 's' : if(direction!=1) direction=2; break; case 'a' : if(direction!=4) direction=3; break; case 'd' : if(direction!=3) direction=4; break; case 'p' : Guangbiaoxy(0,35); printf("請輸入速度(單位:毫秒):"); int sp; scanf("%d",&sp); Sbegin(sp); break; default : printf("\a"); goto label; break; } } time_t t2=clock()%10000000; if(goon==1 || da==(t2-t1)/speed) continue; else { da=(t2-t1)/speed; int S=qx.size(),sa,sb; for(int i=0;i<S;++i) { if(i==0) { sa=qx.front(); sb=qy.front(); int tempx=sa,tempy=sb; tempx+=dir[direction][0]; tempy+=dir[direction][1]; if(tempx<0 || tempx>=40 || tempy<0 || tempy>=40 || Map[tempx][tempy]==1) { result=S; goto label1; } Map[tempx][tempy]=1; if(tempx==newx && tempy==newy) { qx.push(tempx+dir[direction][0]); qy.push(tempy+dir[direction][1]); Map[tempx+dir[direction][0]][tempy+dir[direction][1]]=1; Guangbiaoxy(qx.back()*2,qy.back()); printf("█"); while(1) { newx=rand()%40; newy=rand()%40; if(!Map[newx][newy]) break; } Guangbiaoxy(newx*2,newy); printf("█"); } qx.push(tempx); qx.pop(); qy.push(tempy); qy.pop(); Guangbiaoxy(qx.back()*2,qy.back()); printf("█"); continue; } if(i==S-1) { Map[qx.front()][qy.front()]=0; Guangbiaoxy(qx.front()*2,qy.front()); printf(" "); } qx.push(sa); qy.push(sb); sa=qx.front(); sb=qy.front(); qx.pop(); qy.pop(); } } } label1: Guangbiaoxy(30,19); if(result!=1600) { printf("你失敗了 得分:%d 按r重來",result); } else { printf("你勝利了 得分:%d 按r重來",result); } while(!qx.empty()) qx.pop(); while(!qy.empty()) qy.pop(); while(1) { Sn=getch(); if(Sn=='r') { Sbegin(speed); return; } printf("\a"); } }v0.5.5