电脑小助手(5.0)

· · 个人记录

include<bits/stdc++.h>

include<windows.h>

define un unsigned long long

using namespace std; int ss(int xx) { int imt=sqrt(xx); for(int sqi=1;sqi<=imt;sqi++) if(xx%sqi==0) return 0; return 1; } int mxwoosnv(un,un);

int jszxgbs() { un siajonwpq,taotqkjnazc=1; printf("输入几个数?\n"); cin>>siajonwpq; system("CLS"); un afiwjmz[siajonwpq] ; memset(afiwjmz,0,sizeof(afiwjmz)); for(int jofksmq=1;jofksmq<=siajonwpq;jofksmq++) { printf("第%d个数是?\n",jofksmq); cin>>afiwjmz[jofksmq]; system("CLS"); } taotqkjnazc=afiwjmz[1]; for(int jofksmq=1;jofksmq<=siajonwpq;jofksmq++) { if(afiwjmz[jofksmq]!=0) { if(afiwjmz[jofksmq]>taotqkjnazc) { taotqkjnazc=taotqkjnazcafiwjmz[jofksmq]/mxwoosnv(afiwjmz[jofksmq],taotqkjnazc); } else { taotqkjnazc=taotqkjnazcafiwjmz[jofksmq]/mxwoosnv(taotqkjnazc,afiwjmz[jofksmq]); } } } system("CLS"); printf("这些数的最小公倍数是%d。\n",taotqkjnazc); return 0; } int mxwoosnv(un alfkjmwqoi,un batkjmwqoi) { if(batkjmwqoi==1) return 1; if(alfkjmwqoi%batkjmwqoi==0) return batkjmwqoi; return mxwoosnv(batkjmwqoi,alfkjmwqoi%batkjmwqoi); } int zdgyshcprd(int,int); int jszdgys() { int sdgsi,ajsqpzm=1; printf("输入几个数?\n"); cin>>sdgsi; system("CLS"); int alfqwert[sdgsi]; for(int sdgsj=1;sdgsj<=sdgsi;sdgsj++) { printf("第%d个数是?\n",sdgsj); cin>>alfqwert[sdgsj]; system("CLS"); } ajsqpzm=alfqwert[1]; for(int sdgsj=1;sdgsj<=sdgsi;sdgsj++) { if(alfqwert[sdgsj]!=0) { if(alfqwert[sdgsj]>ajsqpzm) { ajsqpzm=zdgyshcprd(alfqwert[sdgsj],ajsqpzm); } else { ajsqpzm=zdgyshcprd(ajsqpzm,alfqwert[sdgsj]); } } } system("CLS"); printf("这些数的最大公因数是%d。\n",ajsqpzm); return 0; } int zdgyshcprd(int arbxtyg,int binskxq) { if(binskxq==1) return 1; if(arbxtyg%binskxq==0) return binskxq; return zdgyshcprd(binskxq,arbxtyg%binskxq); } bool e[1001]; int Dlen=30; string D[1001] = { "", "西红柿炒蛋","番茄蛋汤","牛肉片","炖猪肉","包心菜","花菜","西蓝花","油麦菜", "西葫芦","咖喱土豆牛肉","鲳鱼","鱿鱼","滑皮虾","菠菜","藕片", "水蒸蛋","荷兰豆","四季豆","葱油芋艿","大头菜","盘菜","蒸香肠", "蒸鱼饼","紫菜汤","罗宋汤","酸菜鱼","香肠蒸蛋","蒸排骨","红烧肉","梅干菜扣肉" }; void d(int din) { cout<<D[din]<<endl; return; } void dp(string nam) { Dlen++; D[Dlen]=nam; } void dc(string nam,int num) { D[num]=nam; } int rd(int l,int r)//4 8:zz=15; { int zz=rand(); return zz%(r-l+1)+l; } void eat() { memset(e,0,sizeof(e)); int sl=rd(1,2); int ck=3; if(sl==1) ck=4; cout<<endl; printf("今天随机抽取%d个菜。\n",ck); cout<<endl; for(int i=1;i<=ck;i++) { int xx=rd(1,Dlen); if(e[xx]==1) { i--; continue; } e[xx]=1; Sleep(1000) ; printf("%d.",i); d(xx); } cout<<endl; } int cfa[1000000],cfans[1000000]; unsigned long long cfaa,cfal,cfansl,cfbb; unsigned long long cfn,cfz,cfqq; int ans=0; int nois=0; struct nt { int z,m; }; void cftop(int cfx) { memset(cfans,0,sizeof(cfans)); int cfl=cfal; for(int cfi=1;cfi<=cfl;cfi++) { cfaa=cfans[cfi]+cfa[cfi]cfx; cfbb=cfans[cfi+1]+cfaa/10; cfans[cfi+1]=cfbb; cfans[cfi]=cfaa%10; } while(cfans[cfl+1]>0) { cfl++; cfans[cfl+1]+=cfans[cfl]/10; cfans[cfl]%=10; } cfansl=cfl; cfal=cfansl; } int wiIwtn; int ada(int aa,int bb)//约分 { if(aa==0) return -1; if(bb==0) return -1; if(aa==1) return 1; if(bb==1) return 1;// if(aa%bb==0) return bb; if(bb%aa==0) return aa;// return ada(bb,aa%bb); } bool zz(nt x,nt y)//sort { return x.z<y.z; } nt aq[5]; char opt[10]= {' ','+','-','','/'};

nt number(nt x,int k, nt y) { nt res; if(k==1) { res.z=x.zy.m+y.zx.m; res.m=x.my.m; //return res; }
else if(k==2) { res.z=x.z
y.m-y.zx.m; res.m=x.my.m; //return res; }

else if(k==3)
{
    res.z=x.z*y.z;
    res.m=x.m*y.m;
    //return res;
}
else if(k==4)
{
    res.z=x.z*y.m;
    res.m=x.m*y.z;
    //return res;
}
//printf("mathing_of:%d %d ada\n",res.z,res.m);
int kkl=ada(   max(res.z,res.m)   ,   min(res.z,res.m)   );//max
if(kkl==-1)
{
    res.z=0;
    res.m=1;
    return res;
}
res.z/=kkl;
res.m/=kkl;

return res;

} void num(nt zm) { if(zm.m==1) { printf("%d",zm.z); } else { printf("(%d/%d)",zm.z,zm.m); } } //void ch(int kl) //{ // if(kl==1) printf("+"); // if(kl==2) printf("-"); // if(kl==3) printf("*"); // if(kl==4) printf("/"); //} void p(nt aa,int key,nt bb,nt answerr) { //printf(" "); num(aa); //ch(key); //cout<<char(opt[key]); //cout<<"hello"; printf("%c",key); num(bb); printf("="); num(answerr); cout<<endl; } void shuchu(nt a,nt b,nt c,nt d,nt e,nt f,int k1,int k2,int k3) { // printf("%d%c%d=%d\n",max(a,b),opt[k1],min(a,b),number(max(a,b),k1,min(a,b))); // printf("%d%c%d=%d\n",max(c,d),opt[k2],min(c,d),number(max(c,d),k2,min(c,d))); // printf("%d%c%d=%d\n",max(e,f),opt[k3],min(e,f),number(max(e,f),k3,min(e,f))); ans++; nois=1; //printf("no.%d:\n",ans); p(a,opt[k1],b,number(a,k1,b)); p(c,opt[k2],d,number(c,k2,d)); p(e,opt[k3],f,number(e,k3,f)); //cout<<"========="<<endl; }

bool ss(nt cmdd) { if(cmdd.z==cmdd.m*wiIwtn&&cmdd.m!=0) return 1; else return 0; } bool used[10]; nt a[10]; void doit(int u) { if(u==5) { //printf("mz_of:-----%d %d %d %d\n",a[1].z,a[2].z,a[3].z,a[4].z); for (int i = 1; i <= 4; i++) //暴力枚举3个运算符 for (int j = 1; j <= 4; j++) for (int k = 1; k <= 4; k++) { if (ss( number(number(number(a[1],i,a[2]),j,a[3]),k,a[4]) )==1&&nois==0) //((a?b)?c)?d shuchu(a[1],a[2],number(a[1],i,a[2]),a[3],number(number(a[1],i,a[2]),j,a[3]),a[4],i,j,k); if (ss( number(number(a[1],i,a[2]),k,number(a[3],j,a[4])) )==1&&nois==0)//(a?b)?(c?d) shuchu(a[1],a[2],a[3],a[4],number(a[1],i,a[2]),number(a[3],j,a[4]),i,j,k);

                if (ss(  number(number(a[1],i,number(a[2],j,a[3])),k,a[4]))==1&&nois==0)//(a?(b?c))?d
                    shuchu(a[2],a[3],a[1],number(a[2],j,a[3]),number(a[1],i,number(a[2],j,a[3])),a[4],j,i,k);
                if (ss(  number(a[1],i,number(number(a[2],j,a[3]),k,a[4])  ))==1&&nois==0)//a((bc)d)
                    shuchu(a[2],a[3],number(a[2],j,a[3]),a[4],a[1],number(number(a[2],j,a[3]),k,a[4]),j,k,i);
                if (ss(  number(a[1],i,number(a[2],j,number(a[3],k,a[4])  )))==1&&nois==0)//a(b(cd))
                    shuchu(a[3],a[4],a[2],number(a[3],k,a[4]),a[1],number(a[2],j,number(a[3],k,a[4])),k,j,i);
            }   
}
for(int i=1;i<=4;i++)
{
    if(used[i]==1) continue;
    if(nois==1) return;
    used[i]=1;
    a[i]=aq[u];
    doit(u+1);
    used[i]=0;
}

} int wdt() { //aq,opt,ans,used memset(aq,0,sizeof(aq)); //memset(opt,0,sizeof(opt)); ans=0; memset(used,0,sizeof(used)); system("color f0"); system("cls"); //printf("已准备好。\n"); //printf("目标值?\n"); //cin>>wiIwtn; wiIwtn=24; printf("请输入四个数字,每个数用空格隔开。\n"); //cout<<"\033c"; scanf("%d %d %d %d", &aq[1].z,&aq[2].z,&aq[3].z,&aq[4].z); aq[1].m=1; aq[2].m=1; aq[3].m=1; aq[4].m=1; sort(aq+1,aq+5,zz); doit(1); // printf("Ok.\n"); if(ans==0) printf("No answer!\n"); // else // { // if(ans>1) // printf("It has %d answers.\n",ans); // else // printf("It has 1 answer.\n"); // } //system("pause"); //return 0; } char f[300][300]; int ll[300]; int l=0; int k; int ee=0; void aaaaa(){} int read() { char asdf; int xx; int qwe=1; while(1) { asdf=getchar(); if(asdf>'9'||asdf<'1') break; } while(1) { if(asdf<='9'&&asdf>=1) { qwe=10; xx+=qwe(asdf-48); } else break; asdf=getchar(); } return xx; } void pt() { printf(" 输入1:即刻关机\n"); printf(" 输入2:定时关机\n"); // printf(" 输入3:每天n时m分关机\n"); printf(" 输入3:计时功能\n"); // printf(" 输入4:取消关机\n"); printf(" 输入4:计算器\n"); //printf(" 输入4:记事本\n"); ///printf(" 输入5:发出DOS指令\n");
printf(" 输入5:打开计事功能\n"); printf(" 输入6:排序功能\n"); printf(" 输入7:24点\n"); printf(" 输入8:随机菜谱选择\n"); } void s(int key) {

//printf("开启功能%d。\n",key);
if(key==0) 
{
    ee=1;
    return ;
}
if(key==1)
{
    system("shutdown -s -t 30");
    printf("30s后关机。\n") ;
    printf("取消关机--esc。\n");
    while(1)
    {
        if(GetAsyncKeyState(27)&0x8000!=0)
            break;
        Sleep(100);
    }
    system("shutdown -a");
    printf("已取消关机。\n");
}
if(key==2)
{
    int x;
    printf("几分钟后关机?");
    cin>>x;
    char c[30];
    sprintf((char*)c,"shutdown -s -t %d",x*60);
    system(c);

    printf("%d分钟后关机。\n",x) ;
    printf("取消关机--esc。\n放弃取消关机--Ctrl\n");
    while(1)
    {
        if(GetAsyncKeyState(27)&0x8000!=0)
        {
            system("shutdown -a");
            printf("已取消关机。\n");
            break;
        }
        if(GetAsyncKeyState(17)&0x8000!=0)
        {
            printf("已放弃关机。\n");
            break;
        }
        Sleep(100);
    }

}

// if(key==3) // { // int nn,m; // printf("定时每天几点几分关机"); // cin>>nn>>m; // char c[30]; // sprintf((char)c,"at %d:%d shutdown -s",nn,m); // system(c); // } // if(key==4) // { // system("shutdown -a"); // printf("已取消关机。\n"); // } if(key==4) { printf("输入1:普通计算器\n"); printf("输入2:高级计算器\n"); int keyoft; cin>>keyoft; if(keyoft==1)system("calc"); else if(keyoft==2) { printf("输入1:计算次方\n"); printf("输入2:计算阶乘\n"); printf("输入3:计算根号\n"); printf("输入4:计算最大公因数\n"); printf("输入5:计算最小公倍数\n"); printf("输入6:计算cos\n"); printf("输入7:计算sin\n"); printf("输入8:计算tan\n"); printf("输入9:分解质因数\n"); int qas; cin>>qas; if(qas==1)//cifang { printf("输入a,b,得到a的b次方。(a和b用空格隔开)\n") ; cin>>cfz>>cfn; memset(cfa,0,sizeof(cfa)); memset(cfans,0,sizeof(cfans)); cfa[1]=1; cfans[1]=1; cfal=1; cfansl=1; for(unsigned long long cfk=1;cfk<=cfn;cfk++) { cftop(cfz); memcpy(cfa,cfans,sizeof(cfa)); } printf("ans="); for(int cfi=cfansl;cfi>=1;cfi--) printf("%d",cfans[cfi]); cout<<endl; } else if(qas==2) { printf("输入a,得到a的阶乘。\n"); int jcg; cin>>jcg; memset(cfa,0,sizeof(cfa)); memset(cfans,0,sizeof(cfans)); cfa[1]=1; cfans[1]=1; cfal=1; cfansl=1; for(unsigned long long cfk=1;cfk<=jcg;cfk++) { cftop(cfk); memcpy(cfa,cfans,sizeof(cfa)); } printf("ans="); for(int cfi=cfansl;cfi>=1;cfi--) printf("%d",cfans[cfi]); cout<<endl; } else if(qas==3)//genhao { double gha,ghb; printf("输入a,b,得到a的b次根号。(a和b用空格隔开)\n") ; cin>>gha>>ghb; printf("%f\n",pow(gha,(1.0/ghb))); } else if(qas==4)//gys { jszdgys(); } else if(qas==5) { jszxgbs(); } else if(qas==6) { double jd; printf("cos(?)\n"); cin>>jd; printf("answer:%f\n",cos(jd)); } else if(qas==7) { double jd; printf("sin(?)\n"); cin>>jd; printf("answer:%f\n",sin(jd)); } else if(qas==8) { double jd; printf("tan(?)\n"); cin>>jd; printf("answer:%f\n",tan(jd)); } else if(qas==9) { printf("分解哪个数?\n"); int se; cin>>se; bool hy=0; printf("%d = ",se); for(int i=2;se>1;i++) { int tmp=0; while(se%i==0) { tmp++; se/=i; } if(tmp!=0) { if(tmp==1) { if(hy==1)printf(" %d ",i); else printf("%d ",i); } else { if(hy==1)printf("* %d ^ %d ",i,tmp); else printf("%d ^ %d ",i,tmp); } hy=1; } } } } } // if(key==4) // { // system("notepad"); // } // if(key==5) // { // char as[1000]; // printf("输入DOS指令:\n"); // Sleep(1); // getchar(); // gets(as); // system(as); // } if(key==5) { asd: printf("输入1:记录一件事\n"); // printf("输入2:查看一件事\n"); printf("输入2:查看今天记录的所有事\n"); printf("输入3:清空今天记录的所有事\n"); printf("输入0:结束本功能(数据不清空,回到主界面)\n------------------------------------------------------------\n"); cin>>k; cout<<"============================================================"<<endl; if(k==1) { l++; printf("这是今天第%d件事:不要空格\n",l); scanf("%s",f[l]+1); ll[l]=strlen(f[l]+1); } // else if(k==2) // { // printf("你要查看第几件事:"); // int mm; // cin>>mm; // if(mm==0||mm>l) printf("没有对应的事情,或已被删除。"); // else // { // for(int i=1;i<=ll[mm];i++) printf("%c",f[mm][i]); // cout<<endl; // } // } else if(k==2) { printf("列表共%d条,如下:\n",l); for(int j=1;j<=l;j++) { printf("%d. ",j); for(int i=1;i<=ll[j];i++) printf("%c",f[j][i]); cout<<endl; } } else if(k==3) { memset(f,0,sizeof(f)); memset(ll,0,sizeof(ll)); l=0; printf("已全部清除。"); } else if(k==0) { printf("计事功能结束。"); goto abb; } else { printf("只能0~4项\n"); } system("pause"); system("cls"); goto asd; abb: aaaaa(); } if(key==3) { printf("ctrl--顺计时\nAlt--倒计时\n"); bool akaks=0; while(1) { if(GetAsyncKeyState(18)&0x8000!=0)//Alt { akaks=1; break; }

        if(GetAsyncKeyState(17)&0x8000!=0)//C
        {
            akaks=0;
            break;
        }

    }
    system("cls");
    if(akaks==1)
    {
        int tms;
        printf("终止---esc\n暂停---Alt\n倒计时几秒?\n");//
        cin>>tms;
        bool fcjsdtsqk=0;
        for(int i=tms;i>=0;i--)
        {
            if(GetAsyncKeyState(18)&0x8000!=0)
            {
                system("cls");
                printf("继续--Ctrl\n终止--esc\n") ;
                while(1)
                {
                    Sleep(100);
                    if(GetAsyncKeyState(27)&0x8000!=0)
                    {
                        fcjsdtsqk=1;
                        break;
                    }
                    if(GetAsyncKeyState(17)&0x8000!=0)break;
                }
                if(fcjsdtsqk==1) break;
                printf("继续计时。\n");
                //Sleep(1000);
            }
            system("cls");
            cout<<i;
            Sleep(900);
            Beep(500,100);
            if(GetAsyncKeyState(27)&0x8000!=0)
            {
                fcjsdtsqk=1;
                break;
            }
        }

        system("cls");  
        if(fcjsdtsqk==0)
        {

            printf("计时结束。");
            Beep(1000,1500);
        }
        else 
        {
            printf("已结束计时。");
        }
    }
    else //shujishi
    {
        printf("结束--esc\n暂停--crtl\n");
        system("pause");
        int tmsss=0;
        while(1)
        {
            bool bk=0;
            tmsss++;
            if(GetAsyncKeyState(27)&0x8000!=0)
                break;
            else if(GetAsyncKeyState(17)&0x8000!=0)
            {
                printf("已暂停。\nAlt--继续\nesc--结束");

                while(1)
                {
                    if(GetAsyncKeyState(27)&0x8000!=0)

                    {
                        bk=1;
                        break;
                    }
                    if(GetAsyncKeyState(18)&0x8000!=0)
                        break;
                }
                if(bk==1)break;
            }
            system("cls");
            cout<<tmsss;
            Sleep(900);
            Beep(500,100);
        }
        system("cls");
        printf("计时结束\n"); 
        Beep(1000,1500);
    }
}
else if(key==6)
{
    printf("你要排序几个数?\n");
    int zxc;
    cin>>zxc;
    printf("输入这些数,每个数用空格隔开。\n");
    int aafd[100000];
    for(int ijk=1;ijk<=zxc;ijk++)
    {
        scanf("%d",&aafd[ijk]);
    }
    sort(aafd+1,aafd+1+zxc);
    for(int ijk=1;ijk<=zxc;ijk++)
        printf("%d ",aafd[ijk]);
    cout<<endl;
}
else if(key==7)
{
    nois=0;
    wdt() ;
}
else if(key==8)
{
    int eee=0;
    printf("输入1->抽取菜谱\n输入2->修改菜谱\n输入3->添加菜名\n") ;
    cin>>eee;
    if(eee==1)eat();
    else if(eee==2) 
    {
        string bnm;
        int asre;
        printf("目前菜谱库:\n共%d计道菜。\n",Dlen);
        for(int i=1;i<=Dlen;i++)
        {
            printf("%d:",i);
            cout<<D[i]<<"    ";
            if(i%4==0) cout<<endl;
            //Sleep(1000);
        }
        printf("\n你要修改哪道菜?请输入该菜的序号。\n");
        scanf("%d",&asre);
        printf("你要把这道菜换成什么?\n") ;
        cin>>bnm;

        cout<<"已经把"<<D[asre]<<"修改为"<<bnm<<endl; 
        dc(bnm,asre);
    }
    else 
    {
        string bnm;
        printf("添加什么菜名?\n") ;
        cin>>bnm;
        dp(bnm);
        printf("已添加。\n");
    }
}
//else printf("请重试!"); 

} int main() { system("mode con cols=60 lines=30"); system("color f0") ; ee=0; srand((unsigned long long)time(0) ); system("cls") ;

int n; 
system("title 电脑小助手"); 
while(1)
{
    if(ee==1) break;
    pt();
    printf("------------------------------------------------------------\n");
    cin>>n;
    printf("------------------------------------------------------------\n");
    s(n);
    system("pause"); 
    system("cls");
    //system("mode con cols=60 lines=30");
}

// cout<<"正在重新启动程序…"; // Sleep(1000); // //scanf("%*s"); // main(); return 0; }