Вывод символов с нижним регистром и верхним регистром

558
28 октября 2017, 17:14

Стоит задача, водится строка, при выводе должно быть две строки, одна выводит символы только верхнего регистра, вторая только нижнего. Начал писать, цикл для определения нижнего регистра, выводит все, но останавливается если на его пути встречается символ с верхним регистром. Как правильно исправить код?

#include "stdafx.h"
#include <iostream>
#include <cstdio>
#include <cctype>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    int str0=0;
    char str[100],str1, str2;
    cout << "Строка: ";
    cin >> str;
    while (str[str0])
    {
        str1 = str[str0];
        if (islower(str1)) {
            cout << str1;
            str0++;
        }
    }
    system("pause");
    return 0;
}
Answer 1

str0++; надо вынести из if.

Вот так:

while (str[str0])
{
    str1 = str[str0];
    if(islower(str1)) 
    {
        cout << str1;
    }
    str0++;
}

А иначе при встрече символа в верхнем регистре у вас инкремент индекса прекращается, и вы зацикливаетесь на этом символе навсегда.

READ ALSO
Почему typeid печатает неверный тип?

Почему typeid печатает неверный тип?

Изучаю вывод типов в С++, и использую метод name() класса std::type_info, для печати типа, который имеет переменная:

293
Смена компилятора в CLion

Смена компилятора в CLion

Установил g++ через brew install gcc путь до него /usr/local/bin/g++-7, но CLion использует этот /Applications/Xcodeapp/Contents/Developer/Toolchains/XcodeDefault

287
Как извлечь стили из Word на C++

Как извлечь стили из Word на C++

Пишу программу для автоматической проверки форматирования в WordСтало ясно что для извлечения стилей нужно парсить XML

293
Ошибка по адресу

Ошибка по адресу

Помогите найти ошибку

381