我有我的地方,我無法獲得if (sequence[i]!='M' && sequence[i]!='U' && sequence[i]!='I')
作品的以下功能麻煩..程序沒有執行內容正確
基本上,我計劃在此過程中的工作 -
- 輸入在輸入
- 輸入在字符序列的大小,其中字符只能是M,U或I
例如。如果我輸入3
作爲我的輸入尺寸,然後輸入MUUI
,它將輸出無效輸入並要求輸入新的輸入,直到輸入MUI
之類的內容爲止。
但是,如果我輸入3
作爲我的輸入大小,然後MPO
作爲字符序列,即使它不正確,程序仍會繼續運行行if (sequence[i]!='M' && sequence[i]!='U' && sequence[i]!='I')
。
而且,如果我試圖重新安排我的臺詞,而輸入的字符是正確的這段時間,規模將是不正確的,程序仍會繼續執行..
難道我做錯了什麼地方?
int main(){
int sz;
cout<<"Enter in size of input: ";
cin>>sz;
char *sequence = new char[sz];
cout<<"Enter MU character sequence(M/U/I): ";
cin>>sequence;
bool checkMUI =isMUString(sequence, sz);
while(checkMUI== false){
cout<<"INVALID INPUT. RE-Enter MU character sequence(M/U/I): ";
cin>>sequence;
checkMUI =isMUString(sequence, sz);
}
bool isMUString(char* sequence, int size){
int numberOfChars = 0;
while (*sequence != '\0')
{
numberOfChars++; sequence++;
}
for(int i=0;i<size;i++){
if (numberOfChars != size){
if (sequence[i]!='M' && sequence[i]!='U' && sequence[i]!='I'){
return false;
}
}
}
return true;
你可能想在這裏用'之開關聲明而不是一個錯綜複雜的'&&'操作鏈。 – tadman
另外你爲什麼要重寫'strlen'?這真令人困惑,你在這裏做什麼,也不清楚爲什麼這是所有C代碼標記C++。 – tadman
同樣在你開始使用for循環的地方,'sequence'已經指向字符串的結尾。 – tonisuter