Вы видите непоследовательное количество записей, прочитанных из файла из-за
while(!inputFile.eof())
Это неправильно. См. Почему iostream :: eof внутри условия al oop (то есть `while (! Stream.eof ())`) считается неправильным?
Далее, это:
bool ckeckCap(char ch){
if((ch>='A')&&(ch<='Z')){
return true;
return false;
}
}
Должно быть
bool ckeckCap(char ch){
if((ch>='A')&&(ch<='Z')){
return true;
}
return false;
}
или, скорее,
bool ckeckCap(char ch){
return ((ch>='A')&&(ch<='Z'));
}
Обратите внимание, что это короче, легче для чтения, и вы не можете совершить ту же ошибку, что и выше.
В вашем коде return false;
никогда не будет достигнут. Если условие оценивается как false
, вы не возвращаетесь из функции, объявленной для возврата bool
. Это вызывает неопределенное поведение.
Не проблема в вашем коде, но это выглядит подозрительно:
char ch;
bool cap;
Использование переменных до их инициализации является распространенной ошибкой (потенциально также UB). Этого можно избежать, объявив переменные только тогда, когда вы можете инициализировать их с каким-либо значимым значением, или, если это невозможно, инициализируйте их с некоторым значением, например:
char ch = ' ';
bool cap = false;