ucinanie ostaniej literki
Ostatnio zmodyfikowano 2018-02-06 11:42
robertos18 Temat założony przez niniejszego użytkownika |
ucinanie ostaniej literki » 2018-02-06 03:15:39 Gdy zmieniam litery z miejsca parzystego na nieparzyste nie wypisuje mi ostatniej literki w czym moze tkwic problem ? #include <iostream> #include <algorithm>
using namespace std;
int main() { string a; cin >> a; string wynik; for( int i = 0; i < a.length() - 1; i += 2 ) { wynik += a[ i + 1 ]; wynik += a[ i ]; } cout << wynik; return 0; }
|
|
YooSy |
» 2018-02-06 08:27:41 Gdy zmieniam litery z miejsca parzystego na nieparzyste nie wypisuje mi ostatniej literki w czym moze tkwic problem ? |
Podaj przykład poprawnego i niepoprawnego kodu. |
|
darko202 |
» 2018-02-06 08:45:05 można powiedzieć, że dla długości nieparzystej stringa ewidentnie sięgasz poza zakres
np. 1
wynik += a[1 ]; // tu znak końca string ląduje na wynik[0] wynik += a[0 ]; // ? co się dzieje, jeśli w ogóle to wykonuje |
|
mateczek |
» 2018-02-06 11:42:02 prawie wszystko ok po prostu nie kopiujesz ostatniego znaku string imie="ala"; rozmiar =3 rozmiar -1=2 for (int i =0;i<2;i+=2) //robisz jedną iterację. przez co nowy napis będzie "la" Jeśli rozmiar wyniku mniejszy od rozmiaru źródła dodaj ostatni znak. lub tak jak niżej #include <iostream> #include <algorithm> using namespace std; int main() { string a = "ala"; for( size_t i = 0; i < a.length() - 1; i += 2 ) { std::swap( a[ i ], a[ i + 1 ] ); } cout << a; return 0; }
|
|
« 1 » |