Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
1 / 1 / 0
Регистрация: 19.10.2018
Сообщений: 27

Найти количество прописных букв в строке

21.12.2018, 17:38. Показов 3101. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уже как пол месяца я изучаю С++ по книге Герберта Шилдта "С++. Руководство для начинающих". На мой взор пала задача, которая звучит следующим образом:
Напишите программу, которая подсчитывает и отображает на экране количество прописных букв в строке.
вот какое решение предпринял я, но при тестировании наткнулся на несколько ошибок
условие: необходимо использовать указатели
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for (;;)
{
    int count;
    count = 0;
 
    char str[80];
    char *ptr_str;
 
    cout << "Введите строку: "; cin >> str;
    ptr_str = str;
    for (int i = 0; ptr_str[i - 1]; i++) {
    if (islower(ptr_str[i])) count++;
        ptr_str++;
    }
 
    cout << "Количество прописных букв в строке " << str << " : " << count << endl;
}
Ошибки:
  1. Если ввести первым символом в строку четное количество символов ( например aa , he , hell , stoner ), то происходит какая-то системная видимо ошибка
  2. Но этого можно избежать! Для того чтобы не выдавало такую системную ошибку нужно просто писать нечетное количество символов, но тогда возникает другая системная ошибка. например в выводе программы
    Введите строку: a
    Количество прописных букв в строке a : 1
    Введите строку: aaa
    Количество прописных букв в строке aaa : 2
    Введите строку: hello
    Количество прописных букв в строке hello : 3
    Введите строку: aaaaaaa
    Количество прописных букв в строке aaaaaaa : 4
    Введите строку: aaaaaaaaa
    Количество прописных букв в строке aaaaaaaaa : 5
    Введите строку: aaaaaaaaaaa
    Количество прописных букв в строке aaaaaaaaaaa : 6
    Введите строку: aaaaaaaaaaaaa
    Количество прописных букв в строке aaaaaaaaaaaaa : 7
    выводится не то значение, которое нужно.
    кстати, я заметил что если поделить количество символов в каждой из этих строк на 2 и округлить это значение, то получается то, что он как раз и вычисляет (например строка hello - 5 символов. 5/2 = 2.5, округляем, равняется 3);
    или он берет в счет нуль-символ тоже(например строка hello - это массив символов char str[] = { "h","e","l","l","o","" } )

в общем непонятен мне алгоритм того, как эта программа строится и как она проводит вычисления, при том что написал то я сам ее!!!
это как строить дом и не понимать - а зачем же я сюда поставил эти 3 кирпича? а оказывается эти 3 кирпича как 3 кита, на которых стоит земля - они держат весь дом
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.12.2018, 17:38
Ответы с готовыми решениями:

Найти количество прописных букв в строке
Здравствуйте, у меня код: #include&lt;iostream&gt; #include&lt;cctype&gt; #include&lt;cstdio&gt; #include&lt;cstring&gt; using namespace std; int...

Проверить количество заглавных букв в строке А и количество прописных букв в строке В
Добрый день, помогите разобраться. Пишу программу, которая должна проверять количество заглавных букв в строке А и количество прописных...

Количество прописных букв в строке
Привет всем. Ребят есть такая задача: напишите программу, которая подсчитывает и отображает на экране количество прописных букв в строке....

3
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,816
21.12.2018, 18:35
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    for (;;)
    {
        int count;
        count = 0;
 
        char str[80];
        char *ptr_str;
 
        std::cout << "Введите строку: "; std::cin >> str;
        ptr_str = str;
        for (int i = 0; ptr_str[i]; i++) {
            if (islower(ptr_str[i])) count++;
        }
 
        std::cout << "Количество прописных букв в строке " << str << " : " << count << std::endl;
    }
1
1 / 1 / 0
Регистрация: 19.10.2018
Сообщений: 27
21.12.2018, 19:17  [ТС]
Nishen, благодарю а почему надо было сделать именно так?

Добавлено через 10 минут
Nishen, и еще последняя проблема - почему с русскими символами программа не работает?
0
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,816
21.12.2018, 20:25
Лучший ответ Сообщение было отмечено savaznatnov как решение

Решение

Цитата Сообщение от savaznatnov Посмотреть сообщение
а почему надо было сделать именно так?
Потому что что ты проверяешь с помощью
C++
1
ptr_str[i - 1]
?
На первой же итерации проверяешь мусор, который лежит в str[-1].
Во вторых, увеличиваешь указатель дважды за цикл (i++; ptr_str++

Добавлено через 38 секунд
Цитата Сообщение от savaznatnov Посмотреть сообщение
и еще последняя проблема - почему с русскими символами программа не работает?
Вариант функции std::islower Для работы с русскими буквами расположен в файле <locale>
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.12.2018, 20:25
Помогаю со студенческими работами здесь

Подсчитать количество содержащихся в строке прописных латинских букв
Дана строка. Подсчитать количество содержащихся в ней прописных латинских букв. Помогите пожалуйста, заранее спасибо)

Подсчитать, сколько было введено: латинских прописных букв, кириллических прописных букв, цифр, знаков переноса, прочих символов.
Помогите, пожалуйста, написать программу :scratch: Подсчитать, сколько было введено: латинских прописных букв, кириллических прописных...

Посчитать количество строчных и количество прописных букв
Написать программу, в которой с клавиатуры вводится строка. Посчитать количество строчных и количество прописных букв в этой фразе.

Как написать функцию, которая подсчитывает число прописных и строчных букв в строке?
Как написать функцию, которая подсчитывает число прописных и строчных букв в строке? В С++ Добавлено через 19 часов 9 минут Ну...

Подсчитать количество содержащихся в ней прописных латинских букв
Дана строка. Подсчитать количество содержащихся в ней прописных латинских букв. Помогите плиз, заранее спасибо)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru