у меня возникли проблемы со следующей функцией шахты, где я не смог получить if (sequence[i]!='M' && sequence[i]!='U' && sequence[i]!='I')
работы ..Программа не выполняется содержание правильно
В основном, мои программы работы в этой процедуре -
- Введите в размере входа
- Ввод в последовательности символов, где символы могут быть только М, U или я
Например. Если я вхожу в 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;
Вы можете использовать 'switch' заявление здесь вместо свернутой цепочки операций '&&'. – tadman
Также почему вы переписываете 'strlen'? Это действительно запутывает то, что вы здесь делаете, а также неясно, почему это помечено C++, когда все это C-код. – tadman
Также в момент, когда вы начинаете с цикла for, 'sequence' уже указывает на конец строки. – tonisuter