Dzień dobry.
Stworzyłem kod, który ma odwracać napis zawarty w zmiennej wyraz
i wpisać go do zmiennej o nazwie wspak
. Obie zmienne są typu string.
I odwracanie wykonałem prawidłowo. Tylko nie chce mi wyświetlać zawartości zmiennej wspak
, gdy wpisuję cout<<"\r"<<wspak;
(nic nie wyświetla).
Gdy wcześniej wpisałem cout<<endl<<wspak[0]<<wspak[1]<<wspak[2]<<wspak[3];
to poszczególne litery znajdują się w zmiennej wspak
, ponieważ
ten zapis wyświetla odwrócone znaki. To czemu nie działa cout<<"\r"<<wspak;
?
W jeszcze jedno. wewnątrz pętli odwracającej napis mam napisane cout<<dlugosc<<" "<<licznik<<" "<<wspak<<" "<<endl;
, w wyniku czego wyświetlana jest zawartość zmiennych dlugosc
i licznik
, ale bez zawartości zmiennej wspak (co widać na zamieszczonym na końcu wyniku działania programu; powinna się wyświetlić 5 razy, a nie ma ani razu). Dlaczego się nie wyświetla zawartość zmiennej wspak
?
Kod:
#include <iostream>
#include <string>
using namespace std;
int main ()
{
//deklaracje zmiennych
string wyraz;
int dlugosc=0;
string wspak;
wyraz="woda"; // wyraz do odwrócenia
dlugosc=wyraz.length(); // pobranie ilosci znaków stringu wyraz
cout<<"Długośc wyrazu: "<<dlugosc<<endl; // wypisanie długości wyrazu
for (int licznik=dlugosc; licznik>-1; --licznik) // pętla odwracająca
{
wspak[dlugosc-licznik]=wyraz[licznik-1];
cout<<dlugosc<<" "<<licznik<<" "<<wspak<<" "<<endl; // w celu sparawdzenia wyświetla zawartości
//zmiennych dlugosc, licznik i wspak ************* drugi problem
}
cout<<endl<<wspak[0]<<wspak[1]<<wspak[2]<<wspak[3]; // wypisanie "na siłę" elementów zmiennej wspak
cout<<"\r"<<wspak; // wypisanie całej zawartości zmiennej wspak **************** i to nie działa (pierwszy problem)
return 0;
}
Wynik działania:
Długośc wyrazu: 4
4 4
4 3
4 2
4 1
4 0
adow