• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zamiana małej litery na wielką i na odwrót

VPS Starter Arubacloud
0 głosów
242 wizyt
pytanie zadane 30 grudnia 2015 w C i C++ przez sympi Nowicjusz (240 p.)

Witam, próbuje rozgryźć takie zadanie:

Napisz program wczytujący dane z klawiatury aż do znaku @, a następnie pokazujący wczytane dane poza cyframi; każda wielka litera ma być zamieniona na małą i odwrotnie.

Nie wiem dlaczego w moim programie następuje tylko zamiana z wielkiej litery na małą, a odwrotnie nie działa, mimo że jest zrobione analogicznie. Nie rozumiem :/

 

Oto mój kod:

#include <iostream>
#include <cctype>

using namespace std;

int main()
{
    char ch;
    cout << "Wprowadz zdanie, @ konczy program." << endl;
    cin.get(ch);

    while (ch!='@')
    {
    if (isdigit(ch))
      ch = NULL;
    if (isupper(ch)==true)
      ch=tolower(ch);
    if (islower(ch)==true)
      ch=toupper(ch);
      
       cout << ch;
       cin.get(ch);
    }

    return 0;
}

Ma ktoś jakiś pomysł?

3 odpowiedzi

+1 głos
odpowiedź 30 grudnia 2015 przez makoso Mądrala (7,380 p.)

nie znam się na C++ ale łatwo zauważyć że najpierw zmniejszasz te wielkie litery na małe

if (isupper(ch)==true)
      ch=tolower(ch);

następnie wszystkie zwiększasz (te które były małe i te które stały się małe

if (islower(ch)==true)
      ch=toupper(ch);
       
       cout << ch;
       cin.get(ch);
    }

rozwiązanie mbędzie zastosowanie tutaj elseif jeżeli istnieje w C++ a ja nie mam zielonego pojęcia dla mnie wyglądałoby to podobnie do:

#include <iostream>
#include <cctype>
 
using namespace std;
 
int main()
{
    char ch;
    cout << "Wprowadz zdanie, @ konczy program." << endl;
    cin.get(ch);
 
    while (ch!='@')
    {
    if (isdigit(ch))
      ch = NULL;
    if (isupper(ch)==true){
      ch=tolower(ch);
    }
    else if (islower(ch)==true){
      ch=toupper(ch);
       }
       cout << ch;
       cin.get(ch);
    }
 
    return 0;
}

 

+1 głos
odpowiedź 30 grudnia 2015 przez Colossus Mądrala (6,410 p.)
   
Spróbuj czy takie coś zadziała:
 if (isupper(ch)==true)
      ch=tolower(ch);
    else if (islower(ch)==true)
      ch=toupper(ch);

 

0 głosów
odpowiedź 30 grudnia 2015 przez sympi Nowicjusz (240 p.)

Macie racje! Brakowało else po warunku... ale ja ślepy. Chociaż po dodaniu else program nadal nie działał tak jak powinien, musiałem zamienić == true, na != false... Teraz rozkminiam dlaczego... indecisionlaugh

Tak wygląda teraz kod w pętli:

while (ch!='@')
    {
    if (isdigit(ch) == true)
      ch = NULL;
    if (isupper(ch) == true)
      ch = tolower(ch);
    else if (islower(ch) != false)
      ch = toupper(ch);

       cout << ch;
       cin.get(ch);
    }

Wszystko działa super. Dzięki wielkie za pomoc :)

Podobne pytania

0 głosów
2 odpowiedzi 1,022 wizyt
pytanie zadane 10 czerwca 2019 w C i C++ przez magda_19 Gaduła (3,080 p.)
0 głosów
3 odpowiedzi 351 wizyt
pytanie zadane 25 lutego 2016 w C i C++ przez igor1988bb Użytkownik (800 p.)
0 głosów
1 odpowiedź 530 wizyt
pytanie zadane 22 grudnia 2015 w C i C++ przez Zangariev Początkujący (290 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...