问题标题: 家人们,失踪程序回归

0
0
已解决
被禁言 刘宇航
刘宇航
修练者
修练者

不知道你们还记不记得L.bc,我已经忘了是版本是多少了,好像是0.0.5,反正,我更新了!!!

代码如下↓。

#include<iostream>
#include<cmath>
#include<windows.h>
using namespace std;
long long dpos[1005][1005][15],ipos[1005][1005][15],opos[1005][1005][15],i=1,Error;
long long sz[1005][15],twj[15],error[100005];
int iinout[1005];
double dinout[1005];
bool binout[1005];
string sinout[1005];
long long linout[1005];
char cinout[1005];
string s,t[1000005],cuowu[1000005];
double fd[1005];
long long sl[1005],cl[1005],vs[1005],pa[1005];
int main(){
    cout<<"L.bc_0001>|";
    while(getline(cin,s)){
        t[i]=s;
        if(s.substr(0,4)=="int_"){
            if(s[5]=='='){
                for(int j=6;j<s.size();j++){
                    iinout[s[4]]=iinout[s[4]]*10+(s[j]-'0');
                }
            }
            dpos[i][s[4]][1]=1;
            fd[s[4]]=1.1;
        }
        else if(s.substr(0,7)=="double_"){
            dpos[i][s[7]][2]=1;
            fd[s[7]]=1.2;
        }
        else if(s.substr(0,5)=="bool_"){
            if(s[6]=='='){
                if(s[7]=='0') binout[s[5]]=0;
                else binout[s[5]]=1;
            }
            dpos[i][s[5]][3]=1;
            fd[s[5]]=1.3;
        }
        else if(s.substr(0,7)=="string_"){
            if(s[8]=='='&&s[9]=='"'&&s[s.size()-1]=='"'){
                for(int j=10;j<s.size()-1;j++){
                    sinout[s[7]]+=s[j];
                }
            }
            dpos[i][s[7]][4]=1;
            fd[s[7]]=1.4;
        }
        else if(s.substr(0,10)=="long long_"){
            if(s[11]=='='){
                for(int j=12;j<s.size();j++){
                    linout[s[10]]=linout[s[10]]*10+(s[j]-'0');
                }
            }
            dpos[i][s[10]][5]=1;
            fd[s[10]]=1.5;
        }
        else if(s.substr(0,5)=="char_"){
            if(s[5]=='='){
                cinout[s[6]]=s[8];
                if(s[7]!=char(39)||s[9]!=char(39)){
                    Error++;
                    error[i]=1;
                    cuowu[i]="Where are the single quotation marks ?";
                }
            }
            dpos[i][s[5]][6]=1;
            fd[s[5]]=1.6;
        }
        else if(s.substr(0,4)=="lin>"&&(s[4]>='a'&&s[4]<='z')||(s[4]>='A'&&s[4]<='Z')){
            if(fd[s[4]]==0){
                Error++;
                error[i]=1;
                cuowu[i]="You undefined variable '";
                cuowu[i]+=s[4];
                cuowu[i]+="'";
            }
            if(fd[s[4]]==1.1) ipos[i][s[4]][1]=1;
            if(fd[s[4]]==1.2) ipos[i][s[4]][2]=1;
            if(fd[s[4]]==1.3) ipos[i][s[4]][3]=1;
            if(fd[s[4]]==1.4) ipos[i][s[4]][4]=1;
            if(fd[s[4]]==1.5) ipos[i][s[4]][5]=1;
            if(fd[s[4]]==1.6) ipos[i][s[4]][6]=1;
        }
        else if(s.substr(0,5)=="lout<"){
            if(fd[s[5]]==0&&((s[6]!=char(39)&&s[8]!=char(39))||(s[6]!='"'&&s[8]!='"'))){
                Error++;
                error[i]=1;
                cuowu[i]="You undefined variable '";
                cuowu[i]+=s[4];
                cuowu[i]+="'";
            }
            if(s[5]==char(39)&&s[7]==char(39)){
                opos[i][s[6]][6]=1;
                cinout[s[6]]=s[6];
            }
            if(fd[s[5]]==1.1) opos[i][s[5]][1]=1;
            if(fd[s[5]]==1.2) opos[i][s[5]][2]=1;
            if(fd[s[5]]==1.3) opos[i][s[5]][3]=1;
            if(fd[s[5]]==1.4) opos[i][s[5]][4]=1;
            if(fd[s[5]]==1.5) opos[i][s[5]][5]=1;
            if(fd[s[5]]==1.6) opos[i][s[5]][6]=1;
        }
        else if(s.substr((0,6))=="L<Win>"){
            twj[1]=1;
            for(int i=6;i<=s.size();i++){
                if(s[i]!=' '){
                    twj[1]=1;
                    Error++;
                    error[i]=1;
                    cuowu[i]="Import unknown header file";
                }
            }
        }
        else if(s.substr(0,6)=="sleep("&&s[s.size()-1]==')'){
            if(twj[1]==0){
                Error++;
                error[i]++;
                cuowu[i]="Don't have the header file(<Win>)";
            }
            for(int j=6;j<s.size()-1;j++){
                sl[i]=sl[i]*10+(s[j]-'0');
            }
        }
        else if(s.substr(0,7)=="system("&&s[7]=='"'&&s.substr(8,5)=="clean"&&s[13]=='"'&&s[14]==')'){
            if(twj[1]==0){
                Error++;
                error[i]=1;
                cuowu[i]="Don't have the header file(<Win>)";
            }
            cl[i]++;
        }
        else if(s.substr(0,7)=="system("&&s[7]=='"'&&s.substr(8,5)=="pause"&&s[13]=='"'&&s[14]==')'){
            if(twj[1]==0){
                Error++;
                error[i]=1;
                cuowu[i]="Don't have the header file(<Win>)";
            }
            pa[i]++;
        }
        else if(s=="over 0"){
            break;
        }
        else if(s=="") ;
        else{
            Error++;
            error[i]=1;
            cuowu[i]="Unknown command ";
            cuowu[i]+='"';
            cuowu[i]+=s;
            cuowu[i]+='"';
        }
        i++;
        if(i<10) cout<<"L.bc_000"<<i<<">|";
        else if(i<100) cout<<"L.bc_00"<<i<<">|";
        else if(i<1000) cout<<"L.bc_0"<<i<<">|";
        else if(i<10000) cout<<"L.bc"<<i<<">|";
        else{
            cout<<"Error!"<<endl;
            cout<<"不合法行数!!!"<<endl;
            cout<<"  /\\"<<endl;
            cout<<" / !\\"<<endl;
            cout<<"/____\\"<<endl;
            Sleep(1000);
            system("cls");
            return 0;
        }
    }
    if(Error!=0){
        cout<<Error<<" to ERROR!"<<endl;
        for(int i=1;i<=10000;i++){
            if(error[i]!=0){
                cout<<"Number "<<i<<" is ERROR!"<<endl;
                cout<<"  "<<cuowu[i]<<endl;
            }
        }
        return 0;
    }
    cout<<endl<<"运行结果:"<<endl; 
    for(int lbcp=1;lbcp<=i;lbcp++){
        if(sl[lbcp]!=0){
            Sleep(sl[lbcp]);
            continue;
        }
        if(cl[lbcp]!=0){
            system("cls");
            for(int sk=1;sk<=i;sk++){
                cout<<"L.bc_"<<sk<<">|";
                cout<<t[sk]<<endl;
            }
            cout<<endl<<"运行结果:"<<endl<<endl;
            continue;
        }
        if(pa[lbcp]!=0){
            system("pause");
            system("cls");
            for(int sk=1;sk<=i;sk++){
                cout<<"L.bc_"<<sk<<">|";
                cout<<t[sk]<<endl;
            }
        }
        for(int j=1;j<=1000;j++){
            if(ipos[lbcp][j][1]!=0){
                cin>>iinout[j];
            }
            if(ipos[lbcp][j][2]!=0){
                cin>>dinout[j];
            }
            if(ipos[lbcp][j][3]!=0){
                cin>>binout[j];
            }
            if(ipos[lbcp][j][4]!=0){
                cin>>sinout[j];
            }
            if(ipos[lbcp][j][5]!=0){
                cin>>linout[j];
            }
            if(ipos[lbcp][j][6]!=0){
                cin>>cinout[j];
            }
            if(opos[lbcp][j][1]!=0){
                cout<<iinout[j]<<" ";
            }
            if(opos[lbcp][j][2]!=0){
                cout<<dinout[j]<<" ";
            }
            if(opos[lbcp][j][3]!=0){
                cout<<binout[j]<<" ";
            }
            if(opos[lbcp][j][4]!=0){
                cout<<sinout[j]<<" ";
            }
            if(opos[lbcp][j][5]!=0){
                cout<<linout[j]<<" ";
            }
            if(opos[lbcp][j][6]!=0){
                cout<<cinout[j]<<" ";
            }
        }
    }
    return 0;
}

1.新增加了错误显示

2.调整了“运行结果”

对了,有一个**UG,就是你输入int a(这个a代表任意一个字符)的话,会直接卡出来,我也不知道怎么搞的,string就没问题。。。


1
已采纳
万韧山
万韧山
初级天翼
初级天翼

废了多少精力。。。。。

我要回答