Zamiana kolejności znaków w łańcuchu

0

Witam próbuje napisać program, który zamienia pierwszą literę z ostatnią drugą z przedostatnią itd lecz zamienia mi tak jakby tylko pierwsza literkę z ostatnią co powinienem poprawić w tym kodzie?

 #include <iostream>
#include <cstdlib>
#include <windows.h>

using namespace std;
void zamiana()
{
       int dlugosc,z; string wyraz;
    cin>>wyraz;
    dlugosc=wyraz.length();
    for(int i=0;i<dlugosc-1;i++)
    {


            z=wyraz[i];
            wyraz[i]=wyraz[dlugosc+1];
            wyraz[dlugosc]=z;

    }
    cout<<wyraz;

}

int main()
{
    zamiana();



}
1

Aby dokonać tego Twojego przekształcenia na wyrazie abcdef jak wiele zmian potrzebujesz?
Twoja pętla wykonałaby się aż 5 razy - czy aby słusznie?

Plus w ogóle jakieś dziwoty robisz wewnątrz tej pętli - zacznij od napisania zwyczajnego programu, który wymieni wartość dwóch zmiennych int między sobą.

1

na pewno źle jest ta linijka wyraz[i]=wyraz[dlugosc+1];

0

Czy dobrze zrozumiałem? Chcesz zamienić ostatnią z pierwszą, przedostatnią z drugą itd, czyli np.: ciąg "qwerty" na "ytrewq", lub "abc" na "cba"?
W Delphi nie było by z tym problemu żadnego, a w C++ (zaczynam dopiero) nie powinien być zbyt duży.
Poszukaj coś w stylu "C++ Reverse String", lub po prostu przeanalizuj, to co ja znalazłem:

#include <iostream>
#include <string>
 
int main()
{
    std::string word, result;
 
    std::cin >> word;
 
    for(int iter = word.length() -1 ; iter >= 0; --iter)
    {
        result += word.at(iter);
    }
    std::cout << result;
} 
0

Witam próbuje napisać program, który zamienia pierwszą literę z ostatnią drugą z przedostatnią itd

coś w stylu "C++ Reverse String"
zrobi to za ciebie. reverse
lub na piechotę

#include <iostream>
#include <string>

template <class T>
void swap(T& left, T& right)
{
    T temp{left};
    left = right;
    right = temp;
}

int main()
{
    std::string word{ "abcde" };
    std::size_t it_first{};
    std::size_t it_end{ word.size() - 1 };

    std::cout << word << '\n';
    while (it_first < it_end) {
        swap(word[it_first], word[it_end]);
        ++it_first;
        --it_end;
    }
    std::cout << word << '\n';
    return 0;
} 

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