|
0 / 0 / 0
Регистрация: 13.11.2016
Сообщений: 12
|
|
Отладка программы в С++20.11.2016, 20:53. Показов 814. Ответов 10
Метки нет (Все метки)
Дали программу, которая должна считать количество введенных букв А, пробелов и остальных символов.
Проблема: не идет считывание (учет) первого символа введенной строки Если 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; }
0
|
|
| 20.11.2016, 20:53 | |
|
Ответы с готовыми решениями:
10
Отладка программы Отладка программы. Отладка программы |
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 20.11.2016, 21:13 | |
|
Ну а для чего ты считываешь символ перед циклом, если сам цикл на входе это делает? Уже третья тема с подобным. Вы все в одном месте учитесь?
Добавлено через 2 минуты И что не так с int? Ты не сможешь отличить русскую 'я' от EOF без int. А строки всё равно нет, одни счётчики.
1
|
|
|
0 / 0 / 0
Регистрация: 13.11.2016
Сообщений: 12
|
|
| 20.11.2016, 21:15 [ТС] | |
|
А как там без гетчара прописать? о.О
Добавлено через 1 минуту Ну, мы ведь строку (обозначаемую переменной С) задает, а строки задаются через char...
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
||
| 20.11.2016, 21:23 | ||
|
Строка - массив, а у тебя один символ. EOF не входит в диапазон char, поэтому там int.
1
|
||
|
0 / 0 / 0
Регистрация: 13.11.2016
Сообщений: 12
|
|
| 20.11.2016, 21:33 [ТС] | |
|
Заработало, если cin убрать, спасибо
А как это логически обосновать, не подскажете? Т.е. объяснить, почему я так сделала?
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 20.11.2016, 21:40 | |
|
Что объяснить? Ненужность cin? Это и так очевидно. Цикл сам читает символы.
1
|
|
|
0 / 0 / 0
Регистрация: 13.11.2016
Сообщений: 12
|
|
| 20.11.2016, 21:46 [ТС] | |
|
То есть, с cin программа как бы начинала считывать введенную строку со второго символа, да? Из-за этого "двойного считывания"?
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 20.11.2016, 21:46 | |
|
Да.
1
|
|
|
0 / 0 / 0
Регистрация: 13.11.2016
Сообщений: 12
|
|
| 20.11.2016, 21:47 [ТС] | |
|
Спасибо большое! Очень долго не могли разобраться, зеленые мы еще, первый курс
0
|
|
|
0 / 0 / 0
Регистрация: 20.11.2016
Сообщений: 2
|
|
| 20.11.2016, 23:16 | |
|
nmcf, также возникла проблема с тем, что русские символы принимаются за 2 байта, а латинские за 1 байт. При вводе русских символов он считает каждый за 2. Как исправить? #include <clocale> и setlocale (LC_CTYPE, "ru_RU.UTF-8") не работают, что с ними, что без них одно и тоже. У меня Mac, у товарищей Windows. Для Mac и для Windows полагаю решения разные. Нужны оба, подскажите пожалуйста.
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 20.11.2016, 23:26 | |
|
wcin.get() используй для символа. А также wcout и wstring. В общем на широких символах делай.
0
|
|
| 20.11.2016, 23:26 | |
|
Помогаю со студенческими работами здесь
11
Отладка программы на С++ Отладка программы) Отладка программы Отладка программы. Отладка программы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|