【问题标题】:Problem in taking input while running a c++ program运行 c++ 程序时获取输入的问题
【发布时间】:2020-07-27 02:19:51
【问题描述】:

嘿,我正在解决一个堆栈问题,我已经为它编写了逻辑,但是当我运行我的程序时。 并提供 3 作为输入。​

(a+(b*c))+(d/e)​
((())(()))
((((()

输入不正确。在3的末尾出现问号符号。

#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<stack> 
using namespace std;
int main()
{
    
    long int t;
    cin>>t;
    
    while(t--){
        stack< pair<char,int> > stk1;
        string s;
        cin>>s;
//       getline(cin, s);

        vector<int> vect;
        int i=0,k=1,l=1;
        
        while(s[i] != '\0' ){
            if(s[i]=='('){
                stk1.push( {'(' , k}  );
                vect.push_back(k);
                k++;
            }
            else if( s[i]== ')'){
                if(stk1.empty()){
                    vect.push_back(l);
                    l++;
                }else{
                    vect.push_back( stk1.top().second);
                    stk1.pop();
                }
            }
            i++;
        }
        for(int z=0;z<vect.size();z++){
            cout<<vect[z]<<" ";
        }
        cout<<"\n";
    }

return 0;
}

【问题讨论】:

  • 为什么你提供while(i--) 它应该像while(i=lastLimit)
  • @Analyst while(i=lastLimit) 有一些问题,另外我没有在你的评论和问题之间建立联系,所以我无法验证我认为你打算写的逻辑。
  • 在这样一个小而简单的程序中,您应该能够通过调试器单步调试或使用其他调试技术检查实​​际程序状态并将其与您的预期进行比较来快速找到问题.
  • @paddy 我知道如何调试代码,但我找不到错误。我做了很多问题,但这是我第一次遇到这个问题。
  • @Analyst 我写了 ``` while(t--)``` 这意味着它将运行 t 次。和写最后一个限制一样。

标签: c++ string stack


【解决方案1】:

我使用的是 DEV C++,因为只有这个错误没有出现在代码块中。 所以只在 dev c++ 中存在一些问题。

【讨论】:

    猜你喜欢
    • 2016-07-03
    • 2018-08-23
    • 2018-04-14
    • 1970-01-01
    • 1970-01-01
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多