首页 > 解决方案 > 我的 c++ 程序编译正常,但没有运行 . 我的程序正在运行并停止了一段时间。没有错误显示

问题描述

我的 c++ 程序正在编译,没有错误。我在vscode上运行我的程序。在同一个文件中,当我运行此代码时。
我的系统:

  1. 视窗 10
  2. 视觉工作室代码
  3. C++ 14
#include<bits/stdc++.h>
using namespace std;
int main(){
count<<"Hello";
return 0;
}

它运行良好。
当在同一个文件中时,我把这段代码,

#include<bits/stdc++.h>
using namespace std;
int removeAlt(string s);
int removeTwo(string s,char a,char b);
int alternate(string s);

int main(){
    cout<<alternate("abaacdabd");
    return 0;
}
int removeAlt(string s){
    // remove consicutive characters
    for(int i=0;i<s.size();){
        if(s[i]==s[i+1]){
            s.erase(i,1);
        }
    }
    cout<<"Remove consitutive "<<s<<endl;
    return s.size();
}

int removeTwo(string str,char a,char b){
    for(int i=0;i<str.length();){
        char ch=str[i];
        if(str[i]==a||str[i]==b){
            str.erase(i,1);
        } else i++;
    }
    cout<<"removing "<<a<<" "<<b<<",, "<<str<<endl;
    int res=removeAlt(str);
    return res;
}

// Complete the alternate function below.
int alternate(string s) {
    set<char>st;
    // get different character of set
    for(auto x:s)
        st.insert(x);

    int len=st.size(); // length of set
    char setAr[len];
    auto it=st.begin();
    for(int i=0;i<len;i++){
        setAr[i]=*it;
        it++;
    }
    cout<<"Removing\n";
    int up=len;
    for(int i=0;i<up-1;i++){
        for(int j=i+1;j<=up;j++){
            cout<<"SetAr "<<i<<" "<<j<<endl;
            len=max(0,removeTwo(s,setAr[i],setAr[j]));
        }
    }
    return len;
}

它运行一些语句,之后终端永远暂停。 vscode运行时间

标签: c++gccc++14

解决方案


int removeAlt(string s){
    // remove consicutive characters
    for(int i=0;i<s.size();){
        if(s[i]==s[i+1]){
            s.erase(i,1);
        }
    }
    cout<<"Remove consitutive "<<s<<endl;
    return s.size();
}

你永远不会增加 i ,所以这个函数将永远运行,除非它删除所有内容。


推荐阅读