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;
}
Проблема: не идет считывание (учет) первого символа введенной строки
Если 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;
}