Adieu626 2024-06-19 13:03 采纳率: 14.3%
浏览 2

数组越界 为什么会数组越界

img


为什么在提交的过程中会显示数组越界
题目时要求 zsbd
周三周四周五上周说的只是暂时

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-19 13:03
    关注

    引自免费微信小程序:皆我百晓生

    关于你提供的C++代码,你提到的“数组越界”问题通常发生在尝试访问数组或容器中不存在的元素时。在你的代码中,虽然主要处理的是std::stringstd::stack,但字符串可以被视为字符数组,因此错误可能源于不正确地访问其元素。

    在你提供的代码片段中,有几个潜在的问题点可能导致数组越界:

    1. 循环条件:你的循环条件是for(int i=0;i<n.size();i++)。这本身不会导致数组越界,因为i始终小于n.size()。但是,如果在循环体内部对i进行了修改(例如,通过i++之外的操作),这可能会导致i超出范围。

    2. 条件判断:在条件判断中,有几处可能的语法错误,如if ( n [ ) & n [ ] < = 2 )if ( n [ i ] > = ' A & & n [ i ] < ? 2 ) )。这些表达式似乎包含语法错误,如多余的括号和逻辑运算符使用不当。正确的条件应该清晰且无语法错误。

    3. 栈操作:在栈操作中,你检查了栈是否为空(if (Is.empty())),然后才尝试弹出元素。然而,这里也存在语法错误,应该是if (s.empty())。此外,在弹出元素后,你再次检查栈是否为空(while(!s.empty())),这是正确的,但确保所有条件语句都正确编写非常重要。

    为了帮助你更好地理解并解决这个问题,我将提供一个修正后的代码示例,同时保持原有逻辑不变:

    #include <iostream>
    #include <stack>
    #include <string>
    
    using namespace std;
    
    int main() {
        string n;
        stack<char> s;
    
        cin.tie(nullptr);
        cout.tie(nullptr);
    
        cin >> n;
    
        for (int i = 0; i < n.size(); i++) {
            if (n[i] >= 'A' && n[i] <= 'Z') {
                cout << n[i];
            } else {
                if (s.empty()) {
                    s.push(n[i]);
                } else {
                    while (!s.empty()) {
                        if (s.top() == '(' && n[i] == ')') {
                            s.pop();
                        } else {
                            cout << s.top();
                            s.pop();
                        }
                    }
                    s.push(n[i]);
                }
            }
        }
    
        while (!s.empty()) {
            cout << s.top();
            s.pop();
        }
    
        return 0;
    }
    

    在这个修正后的版本中,我做了以下更改:

    • 更正了所有的条件语句和循环。
    • 确保了栈操作中的语法正确性。
    • 移除了不必要的括号和逻辑运算符,并替换了错误的条件判断。

    请仔细检查这个修正后的代码,看看它是否解决了你的问题。如果有其他疑问或需要进一步的帮助,请随时告诉我。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月19日

悬赏问题

  • ¥15 剑网三内存脚本有没有作者可以做
  • ¥15 c#转安卓 java html
  • ¥15 os.listdir文件路径找不到
  • ¥15 使用gojs3.0,如何在nodeDataArray设置好text的位置,再go.TextBlock alignment中进行相应的改变
  • ¥15 psfusion图像融合指标很低
  • ¥15 银河麒麟linux系统如何修改/etc/hosts权限为777
  • ¥50 医院HIS系统代码、逻辑学习
  • ¥30 docker离线安装mysql报错,如何解决?
  • ¥15 构建工单的总账影响在哪里查询或修改
  • ¥15 三个简单项目写完之后有重赏之后联系我