LWDbiancheng002b 2022-02-26 11:57 采纳率: 100%
浏览 24
已结题

提问:我想制作一个返回的值,但是一直不对,帮看一下

问题遇到的现象和发生背景
最近我制作了一个brain f**k的编译器,然后想制作一个按数字“1”键实现代码提示的功能,但是一直编译都不成功,帮忙看一下

问题相关代码

//================================================================
//  Name                   :Brain_NTF.cpp
//  Author                 :
//  Version                :SE2022
//  Copyright              :
//================================================================
//导入头文件 
#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)         
#include <algorithm>
#include <set>
#define maxn 100001
#define eps 1e-9
#include <iostream>
#include <cstdio>
#include <vector>
#include <sstream>
#include <queue>
#include <typeinfo>
#include <fstream>
#include <map>
#include <windows.h>
#include <cmath>
#include <cstring>
#include <ctime>
typedef long long ll;
using namespace std;
const int inf=0x7fffffff;
string s;
vector<char> a;
int kiss;
int i;
void dealk()
{
    void deal(char c);
    int start=i;
    while(1)
    {
        i++;
        if(s[i]==']')
        {
            if(a[kiss]==0)
            {
                break;
            }
            else
            {
                i=start;
                continue;
            }
        }
        deal(s[i]);
    }
}
void deal(char c)
{
    if(c=='+')
        a[kiss]++;
    if(c=='-')
        a[kiss]--;
    if(c=='>')
    {
        kiss++;
        if(kiss>=a.size())
            a.push_back(0);
    }
    if(c=='<')
    {
        kiss--;
        if(kiss<0)
        {
            a.insert(a.begin(),i);
            kiss=0;
        }
    }
    if(c=='.')
    {
        int m=a[kiss];
        printf("%c",m);
    }
 
    if(c==',')
    {
        char k;
        scanf("%c",&k);
        s[kiss]=k;
    }
    if(c=='[')
    {
        dealk();
    }
}
 
int main()
{
    SetConsoleTitle("Brain_NTF SE 2022年2月26日更新版");
    cout<<"                      Brain_NTF SE                       \n";
    cout<<"=======================关于此程序========================\n";
    cout<<"|              此程序基于MSDOS技术所制作                 |\n";
    cout<<"|          此程序序列号::6N23Y-7850H-6045H              |\n";
    cout<<"|               Brain_NTF 2022-2023(R)                   |\n";
    cout<<"|                      严禁非法拷贝                      |\n";
    system("color 06");
    cout<<"*********************** 代码编辑区 ***********************\n";
    cout<<"按数字1查看代码提示\n";
    c=getch();
    ssx=20;
    if(c=='1'); 
    {
        {
            SetConsoleTitle("代码提示页"); //标题
            cout<<"代码提示:\n"; 
            cout<<"此编程语言只有八种符号,代表的意义如下:\n";
            cout<<"符号> 代表指针加一  符号> 代表指针减一\n";
               cout<<"符号+ 代表指针指向的字节值加一\n";
            cout<<"符号- 代表指针指向的字节值减一\n";
            cout<<"符号. 代表输出指针指向的单元内容(ASCII)\n";
            cout<<"符号, 代表输入内容到指针指向的单元(ASCII)\n";
            cout<<"符号[ 代表指针指向的单元值为零,\n";
            cout<<"向后跳转到]指令的次一指令处\n";
            cout<<"符号] 代表指针指向的单元值不为零,\n";
            cout<<"先前跳转到对应的[指令的次一指令处\n";
            cd(); 
        }
        cd(); 
    }
    else
     
    while(cin>>s)
    {
        a.clear();//每次开始运行都清空一次vector 
        a.push_back(0);
        kiss=0;//使用全局变量kiss 
        for(i=0;i<s.size();i++)
        {
            deal(s[i]);
        }
    }
    return 0;
}
 




我想要达到的结果

实现跳转功能

  • 写回答

2条回答 默认 最新

  • yun6853992 2022-02-26 12:16
    关注

    你的代码里基础语法问题挺多的,还有一些函数,我都不知道从哪里来的。 cd()函数是干嘛的? 以及变量使用前要声明加类型的; 笔误多写; SetConsoleTitle("Brain_NTF SE 2022年2月26日更新版");这函数是想干嘛的

    写代码的时候,建议理解自己写的啥,然后选个好点的编译器(建议用vs,工具可以直接检测出基本语法问题),从主函数开始,写一点代码,调试一下,不要一次写完,调试一脸懵逼。

    我简单让他能运行 试着在vs2019上调试了一下, 分支上的业务逻辑我没去看细节,你可以试着用beyond compare对比一下看看你有哪些语法问题,也可以用vs工具调试一下。

    
    //================================================================
    //  Name                   :Brain_NTF.cpp
    //  Author                 :
    //  Version                :SE2022
    //  Copyright              :
    //================================================================
    //导入头文件 
    #define sspeed ios_base::sync_with_stdio(0);cin.tie(0)         
    #include <algorithm>
    #include <set>
    #define maxn 100001
    #define eps 1e-9
    #include <iostream>
    #include <cstdio>
    #include <vector>
    #include <sstream>
    #include <queue>
    #include <typeinfo>
    #include <fstream>
    #include <map>
    #include <windows.h>
    #include <cmath>
    #include <cstring>
    #include <ctime>
    typedef long long ll;
    using namespace std;
    const int inf = 0x7fffffff;
    string s;
    vector<char> a;
    int kiss;
    int i;
    void dealk()
    {
        void deal(char c);
        int start = i;
        while (1)
        {
            i++;
            if (s[i] == ']')
            {
                if (a[kiss] == 0)
                {
                    break;
                }
                else
                {
                    i = start;
                    continue;
                }
            }
            deal(s[i]);
        }
    }
    void deal(char c)
    {
        if (c == '+')
            a[kiss]++;
        if (c == '-')
            a[kiss]--;
        if (c == '>')
        {
            kiss++;
            if (kiss >= a.size())
                a.push_back(0);
        }
        if (c == '<')
        {
            kiss--;
            if (kiss < 0)
            {
                a.insert(a.begin(), i);
                kiss = 0;
            }
        }
        if (c == '.')
        {
            int m = a[kiss];
            printf("%c", m);
        }
    
        if (c == ',')
        {
            char k;
            scanf_s("%c", &k);
            s[kiss] = k;
        }
        if (c == '[')
        {
            dealk();
        }
    }
    
    int main()
    {
        //SetConsoleTitle("Brain_NTF SE 2022年2月26日更新版");
        cout << "                      Brain_NTF SE                       \n";
        cout << "=======================关于此程序========================\n";
        cout << "|              此程序基于MSDOS技术所制作                 |\n";
        cout << "|          此程序序列号::6N23Y-7850H-6045H              |\n";
        cout << "|               Brain_NTF 2022-2023(R)                   |\n";
        cout << "|                      严禁非法拷贝                      |\n";
        system("color 06");
        cout << "*********************** 代码编辑区 ***********************\n";
        cout << "按数字1查看代码提示\n";
        char c = getchar();
        if (c == '1')
        {
            {
                //SetConsoleTitle("代码提示页"); //标题
                cout << "代码提示:\n";
                cout << "此编程语言只有八种符号,代表的意义如下:\n";
                cout << "符号> 代表指针加一  符号> 代表指针减一\n";
                cout << "符号+ 代表指针指向的字节值加一\n";
                cout << "符号- 代表指针指向的字节值减一\n";
                cout << "符号. 代表输出指针指向的单元内容(ASCII)\n";
                cout << "符号, 代表输入内容到指针指向的单元(ASCII)\n";
                cout << "符号[ 代表指针指向的单元值为零,\n";
                cout << "向后跳转到]指令的次一指令处\n";
                cout << "符号] 代表指针指向的单元值不为零,\n";
                cout << "先前跳转到对应的[指令的次一指令处\n";
                //cd();  //这两个函数是干嘛的?
            }
            //cd();
        }
        else
        {
            while (cin >> s)
            {
                a.clear();//每次开始运行都清空一次vector 
                a.push_back(0);
                kiss = 0;//使用全局变量kiss 
                for (i = 0; i < s.size(); i++)
                {
                    deal(s[i]);
                }
            }
        }
    
        return 0;
    }
    
    
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月7日
  • 已采纳回答 2月27日
  • 创建了问题 2月26日

悬赏问题

  • ¥20 蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏