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

Problem z wyświetleniem poprawnie łańcucha C++

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
168 wizyt
pytanie zadane 18 marca 2021 w C i C++ przez NukaNuka56 Obywatel (1,080 p.)

Witam,

Mam taki problem: Muszę wyświetlić łańcuch znaków wspak wielkimi literami.

Cały kod mam zrobiony natomiast nie wiem jak połączyć i zrobić wyświetlenie wspak wielkimi literami naraz:

#include <iostream>
#include <cstring>

using namespace std;

void wspak(string wyraz,int n)
{
    if(n<1)
    return;
    cout<<wyraz[n-1]<< " ";
    wspak(wyraz,n-1);
}
int main()
{
    string lancuch;
    int a,b,i;
    cout<<"Podaj lancuch znakow "<<endl;
    getline(cin,lancuch);
    cout<<lancuch<<endl<<endl;
    cout<<"Wyswietlenie lancucha wspak i duzymi lierami:"<<endl;
    for(i=0;i<lancuch.size();i++)
    cout<<char(toupper(lancuch[i]));
    int il=lancuch.size();
    wspak(lancuch,il);

    return 0;
}

Wie ktoś może jak to pozmieniać żeby za jednym zamachem wyświetliło łańcuch wspak wielkimi literami? 

Co to znaczy za jednym zamachem: tzn. mamy słowo "kot" i teraz żeby nie wyświetlało "KOT" i "tok" tylko naraz "TOK".

Pozdrawiam

1 odpowiedź

0 głosów
odpowiedź 18 marca 2021 przez Great Stary wyjadacz (10,740 p.)
wybrane 18 marca 2021 przez NukaNuka56
 
Najlepsza

Przypisz otrzymane duże litery w zamian za małe:

for (i = 0; i < lancuch.size(); i++)
        lancuch[i] = char(toupper(lancuch[i]));

Źle dołączasz biblioteki. Poprawnie:

#include <iostream
#include <string> // dla std::string, std::getline
#include <cctype> // dla std::toupper

Możesz od razu wypisać odwrócony i zamieniony łańcuch:

void wspak(const string& wyraz) {
    std::size_t size = wyraz.size();
    for (std::size_t i = 0; i < size; ++i) {
        std::cout << static_cast<char>(std::toupper(wyraz[size - i - 1]));
    }
}

Możesz też użyć STL:

void wspak(string& wyraz) {
    std::transform(wyraz.begin(), wyraz.end(), wyraz.begin(), ::toupper);
    std::reverse(wyraz.begin(), wyraz.end());
}
komentarz 18 marca 2021 przez NukaNuka56 Obywatel (1,080 p.)
Dzięki!

Podobne pytania

0 głosów
0 odpowiedzi 105 wizyt
0 głosów
1 odpowiedź 246 wizyt
pytanie zadane 12 listopada 2019 w C i C++ przez Mała Mi Początkujący (270 p.)
+1 głos
1 odpowiedź 131 wizyt

90,900 zapytań

139,572 odpowiedzi

313,905 komentarzy

60,373 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...