|
0 / 0 / 0
Регистрация: 13.11.2016
Сообщений: 12
|
|
Отладка программы в С++20.11.2016, 20:53. Показов 792. Ответов 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
Отладка программы на С++ Отладка программы) Отладка программы Отладка программы. Отладка программы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|