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

Zamiana małych liter na duże na przemian

42 Warsaw Coding Academy
0 głosów
2,594 wizyt
pytanie zadane 27 kwietnia 2015 w C i C++ przez andrzejugdziejestes Początkujący (390 p.)

Witam,

Po 8 odcinku o łancuchach próbuję zrobić program który zamieniałby litery z dużych na małe na przemian. Co robie źle ze to nie chce się skompilować? 

#include <iostream>
#include <algorithm>
#include <string>

using namespace std;

string imie;
string x;
int main()
{
    cout << "wprowadz imie: ";
    getline(cin,imie);
    int dlugosc=imie.length();

    for(int i=dlugosc-1; i>=0; i--)
    {
        if (i%2==0)
        {imie[i]=x;
            transform(x.begin(), x.end(), x.begin(), ::toupper);
        cout<<x;}
        else {cout imie[i];}
    }



    return 0;
}

 

komunikat z konsoli mam taki:

 ||=== Build: Debug in zgadywanieimiea (compiler: GNU GCC Compiler) ===|
E:\programyc++\zgadywanieimiea\main.cpp||In function 'int main()':|
E:\programyc++\zgadywanieimiea\main.cpp|18|error: cannot convert 'std::string {aka std::basic_string<char>}' to 'char' in assignment|
E:\programyc++\zgadywanieimiea\main.cpp|21|error: expected ';' before 'imie'|
E:\programyc++\zgadywanieimiea\main.cpp|21|warning: statement has no effect [-Wunused-value]|
||=== Build failed: 2 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|

Dodałem zmienną x ponieważ wyrzucał jakiś błąd z konwertowaniem który zniknął po zrobieniu tego.

1 odpowiedź

+1 głos
odpowiedź 27 kwietnia 2015 przez LislaV Bywalec (2,400 p.)

E:\programyc++\zgadywanieimiea\main.cpp|18|error: cannot convert 'std::string {aka std::basic_string<char>}' to 'char' in assignment| 
E:\programyc++\zgadywanieimiea\main.cpp|21|error: expected ';' before 'imie'| 

W lini 18 powinieneś zapisać imie[i] = x[i];, natomiast w lini 21 else {cout << imie[i];} (zapomniałeś o "<<").
Teraz twój kod się skompiluje, lecz program nie zadziała tak jak postanowiłes, bo generalnie to co napisałeś jest troche bez sensu. Żeby nie pisać całego programu za ciebie podpowiem ci - możesz funkcji isupper(), islower(), toupper(tolower(), które według mnie są troche bardziej intuicyjne w użyciu. Wygoogluj o tym jak działają. Powodzenia :)

komentarz 27 kwietnia 2015 przez andrzejugdziejestes Początkujący (390 p.)

Wielkie dzięki za odpowiedź poczytałem trochę i zadziałało :) Teraz wygląda to tak:

 

#include <iostream>
#include <algorithm>


using namespace std;

string imie;
int main()
{
    cout << "wprowadz imie: ";
    getline(cin,imie);
    int dlugosc=imie.length();

    for(int i=dlugosc-1; i>=0; i--)
    {
        if (i%2==0)
        {
            cout<<(char)toupper(imie[i]);
        }
        else {cout<<imie[i];}
    }



    return 0;
}

 

komentarz 27 kwietnia 2015 przez LislaV Bywalec (2,400 p.)

Brawo :) Ja bym jeszcze tego stringa w else przepuścił przez tolower(), wtedy zawsze będziesz miał na przemian wielkie i małe litery. A tak to w porządku :D

Podobne pytania

0 głosów
2 odpowiedzi 1,386 wizyt
0 głosów
1 odpowiedź 155 wizyt
pytanie zadane 11 grudnia 2024 w C i C++ przez adam234345 Początkujący (400 p.)
0 głosów
1 odpowiedź 1,951 wizyt

93,389 zapytań

142,386 odpowiedzi

322,549 komentarzy

62,750 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...