簡體   English   中英

由於C ++程序退出而無法輸入

[英]Not able to input as c++ program exits

所以這個程序檢查一個字符串有多少次單詞chef。該程序正在正確編譯,但是當我運行它時,表明該進程已退出。 我什么都不能輸入。 我該如何解決? 這是我的代碼

#include<iostream>
#include<vector>

using namespace std;


int chef_count(string s){
  int count=0,cur=0,c,h,e,f;
    while(cur!=(s.size()-2)){
      c=0,h=0,e=0,f=0;
      if(s[cur]=='c'||s[cur+1]=='c'||s[cur+2]=='c'||s[cur+3]=='c'){
        c++;
      }
      else if(s[cur]=='h'||s[cur+1]=='h'||s[cur+2]=='h'||s[cur+3]=='h'){
        h++;
      } 
      else if(s[cur]=='e'||s[cur+1]=='e'||s[cur+2]=='e'||s[cur+3]=='e'){
        e++;
      }
      else if(s[cur]=='f'||s[cur+1]=='f'||s[cur+2]=='f'||s[cur+3]=='f'){
        f++;
      }
      if(c==1 && e==1 && h==1 && f==1){
        count++;
      }
      cur++;
    }
  return count;

}


int main(){
  int n;
  int val;
  vector<string> store;
  string s;
  for(int i=0;i<n;i++){
    getline(cin,s);
    store.push_back(s);

  }
  for(int i=0;i<n;i++){
    val=chef_count(store[i]);
    if (val>0){
      cout << val <<endl;
    }
    else{
      cout << "normal" <<endl;
    }
  }

  return 0;

}

for(int i=0;i<n;i++) -在那你需要n的值。

您的編譯器應該已經對此發出警告。 查找有關“未初始化變量”的警告

使用if代替else if。 為n設置一個值並執行cur = cur + 4,因為您已經在檢查字符串'chef'的前4個字母了。 以下是您的代碼的有效版本:(您的代碼檢查字符串中“ chef”一詞的所有排列):

#include<iostream>
#include<vector>
#include<string>
using namespace std;


int chef_count(string s){
  int count=0,cur=0,c,h,e,f;
    while(cur<(s.size())-1){
      c=0,h=0,e=0,f=0;
      if(s[cur]=='c'||s[cur+1]=='c'||s[cur+2]=='c'||s[cur+3]=='c'){
        c++;
      }
       if(s[cur]=='h'||s[cur+1]=='h'||s[cur+2]=='h'||s[cur+3]=='h'){
        h++;
      } 
       if(s[cur]=='e'||s[cur+1]=='e'||s[cur+2]=='e'||s[cur+3]=='e'){
        e++;
      }
       if(s[cur]=='f'||s[cur+1]=='f'||s[cur+2]=='f'||s[cur+3]=='f'){
        f++;
      }
      if(c==1 && e==1 && h==1 && f==1){
        count++;
      }
      cur=cur+4;
    }
  return count;

}


int main(){
  int n=2;
  int val;
  vector<string> store;
  string s;
  for(int i=0;i<n;i++){
      getline(cin,s);
    store.push_back(s);

  }
  for(int i=0;i<n;i++){
    val=chef_count(store[i]);
    if (val>0){
      cout << val <<endl;
    }
    else{
      cout << "normal" <<endl;
    }
  }

  return 0;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM