Program zamieniający wielkość liter

0

Dzień dobry Szanowni Programiści.
Uczę się programowania i mam problem z jednym zadaniem.

Zadanie:

Napisz program wczytujący dane z klawiatury aż do znaku @, a następnie pokazujący wczytane dane poza cyframi; każda litera ma być zamieniona na małą i odwrotnie (bardzo przydatna będzie tutaj biblioteka cctype)

Napisałem następujący program:
Jak się domyślam funkcje cctype zamieniają char na int i tutaj mam pytanie jak tego uniknąć, jak to poprawić?

#include <iostream>
#include <cctype>

int main()
{

char ch;
std::cout << " Podaj tekst. Znak @ konczy wpisywanie. \n";
while(std::cin.get(ch) && ch!='@')
    {
    if(isdigit(ch))
    continue;
    else if (islower(ch))
    std::cout << toupper(ch);
    else if (isupper(ch))
    std::cout << tolower(ch);
    else
    std::cout << ch;
    }
    return 0;
}
2

Char jest int-em, a ściślej kodem z tablicy ascii. A tu masz 2 działające wersję: z wyświetlaniem przez putchar()

#include <iostream>
#include <cctype>

int main()
{

char ch;
std::cout << " Podaj tekst. Znak @ konczy wpisywanie. \n";
while(std::cin.get(ch) && ch!='@')
    {
        if(isdigit(ch))
        continue;
        else if (islower(ch))
            putchar(toupper(ch));
        else if (isupper(ch))
            putchar(tolower(ch));
        else
            std::cout << ch;
    }
    return 0;
}

oraz z zmianą zawartości zmiennej ch

#include <iostream>
#include <cctype>

int main()
{

char ch;
std::cout << " Podaj tekst. Znak @ konczy wpisywanie. \n";
while(std::cin.get(ch) && ch!='@')
    {
        if(isdigit(ch))
        continue;
        else if (islower(ch))
            ch = (toupper(ch));
        else if (isupper(ch))
            ch = (tolower(ch));
        std::cout << ch;
    }
    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0