Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Отладка программы (http://forum.oszone.net/showthread.php?t=320990)

31echo_echo@vk 20-11-2016 20:55 2689214

Отладка программы
 
Дали программу, которая должна считать количество введенных букв А, пробелов и остальных символов.
Проблема: не идет считывание (учет) первого символа введенной строки
Если 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 2689322

Ну с ходу видно, что дублируется метод получения символов из потока ввода.
Код:

std::cin>>c;
и
Код:

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


Время: 22:30.

Время: 22:30.
© OSzone.net 2001-