[C++] Problem z klasa string

0

Oto kod zrodlowy funkcji ktora ma za zadanie zwrocenie stringa z literami "od tylu", niestety nie dziala a ja nie wiem co jest tam nie tak. Pomozecie?

#include <iostream>
#include <string>
#include <cstddef>
using namespace std;

//----------------------

string reverse(const string &src) {
	size_t size=src.size();
	string rev;
	rev.reserve(size);
	for(size_t i=0;i<size;++i) {
		rev[i]=src[size-i-1];
	}
	return rev;
}

//######################

int main() {
	string word("to niestety nie dziala");
	cout<<reverse(word);
}
0

mam takie cos:

#include <iostream>
#include <string>

// deklaracja wyprzedzajaca
void Odwroc(const std::string& tekstZro);

int main()
{
   std::string tekst("tekst do odwrocenia");
   
   Odwroc(tekst);
   
   return 0;
}

void Odwroc(const std::string& tekstZro) // parametrem jest tekst do odwrocenia
{	
   for(int i = tekstZro.size() - 1; i >= 0; --i) /* jesli ma byc wyswietlany znak '\0' to
				* nalezy napisac i = tekstZro.size() */
   {
      std::cout << tekstZro[i];
   }	
}

p.s. jest maly bug... jesli chcesz wprowadzic tekst z klawiatury i w tym tekscie jest spacja to program odrwaca tylko pierwszy czlon np.
do wprowadzenia: odracany tekst;
wynikiem bedzie: ynacardo;
mozna poprawic ale mi sie juz nie chce :P

0

Przeciez mu o to nie chodzilo! Jest roznica miedzy "wypisac w odwrotnej kolejnosci" a "odwrocic kolejnosc".

Poprawiony kod:

#include <iostream>
 #include <string>
 #include <cstddef>
 using namespace std;

 //----------------------

 string reverse(const string &src) {
     size_t size=src.size();
     string rev;
     rev.reserve(size);
     for(size_t i=0;i<size;++i) {
         rev+=src[size-i-1];   // TU BYLO ZLE
     }
     return rev;
 }

 //######################

 int main() {
     string word("to niestety nie dziala");
     cout<<reverse(word) <<endl;  // I TU BRAKOWALO endl
 }
0

wynikiem programu ma byc

zwrocenie stringa z literami "od tylu

krolik ja tam nie widze zadnej roznicy (oprocz implementacji) miedzi wynikiem tego co ja napisalem a tego co Ty napisales i u mnie dla ciagu "to niestety nie dziala" jak i u Ciebie wynikiem operacji jest string w odwroconej kolejnosci... czyli 0 element jest ostatnim ;-)
tak wiec obie implementacje sa poprawne :]

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