![]() |
Отладка программы
Дали программу, которая должна считать количество введенных букв А, пробелов и остальных символов.
Проблема: не идет считывание (учет) первого символа введенной строки Если char c заменить на int c, то программа работает корректно (все считается правильно), но преподаватель сказал, что это неправильно и так нельзя (впрочем, я согласна, не задавать же строку интом)) Работаю в среде QT, было дано задание через контрольные точки понять, почему же, блин, не читается первый символ. Но отладчик по контрольным точкам работать отказывается, виснет и вырубает за собой всю прогу. В чем в этой программе может быть проблема? Как исправить ошибку (кроме варианта замены на int)? Даже не особо важно, наверное, как исправить... Просто объясните, пожалуйста, ПОЧЕМУ идет эта ошибка? #include <iostream> #include <stdio.h> #include <clocale> int main() { int ka,kpr,kost; ka=0; kpr=0; kost=0; char c; std::cout<<"Vvedite posledovatelnost simvolov, zakanchivaushuysa EOF \n"; std::cin>>c; while((c=getchar())!=EOF) if(c=='a'||c=='A') ka++; else if(c==' '||c=='\t'||c=='\n') kpr++; else kost++; std::cout<<"\n Bilo vvedeno \n Bukv A: "<<ka<<"\n"; std::cout<<"Probelov: "<<kpr<<"\n"<<"Ostalnih: "<<kost; return 0; } |
Ну с ходу видно, что дублируется метод получения символов из потока ввода.
Код:
std::cin>>c; Код:
c=getchar() Дальше пока не смотрел, но есть вероятность, что проблема именно в этом. Необходимо использовать последний вариант, первый не несет никакой смысловой нагрузки для программы и его необходимо удалить. |
Время: 22:30. |
Время: 22:30.
© OSzone.net 2001-