所以这是一个程序来检查一个字符串有多少次主厨。该程序正在编译正确但当我运行时显示该过程已退出。 我无法输入任何内容。我该如何解决这个问题?这是我的代码
#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;
}
答案 0 :(得分:4)
for(int i=0;i<n;i++)
- 您需要n
的值。
您的编译器应该已经警告过您。查找有关“未初始化变量”的警告
答案 1 :(得分:0)
使用if代替else if。设置n的值并执行cur = cur + 4,因为您已经检查了单词&#39; chef&#39;的字符串的前4个字母。 以下是您的代码的工作版本:(您的代码会检查字符串中所有单词&#39; chef&#39;的所有排列):
#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;
}