PDA

Показать полную графическую версию : [решено] Отладка программы


31echo_echo@vk
20-11-2016, 20:55
Дали программу, которая должна считать количество введенных букв А, пробелов и остальных символов.
Проблема: не идет считывание (учет) первого символа введенной строки
Если 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;
}

ViRTaCe
21-11-2016, 11:07
Ну с ходу видно, что дублируется метод получения символов из потока ввода.

std::cin>>c;

и

c=getchar()
.
Дальше пока не смотрел, но есть вероятность, что проблема именно в этом. Необходимо использовать последний вариант, первый не несет никакой смысловой нагрузки для программы и его необходимо удалить.




© OSzone.net 2001-2012