Nu obții 100 de puncte sau ai nelămuriri în privința problemelor? Scrie-mi pe Instagram.
Ai găsit o greșeală, vrei să raportezi un utilizator sau vrei să comunici altceva? Folosește formularul de contact.
Vrei să ne transmiți o părere despre platformă? Folosește formularul de feedback.
Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.
Meniu shortcuturi | ? |
Căutare probleme sau utilizatori | / |
Navigare printre rezultatele căutării | ↑, ↓ |
Meniu de contact și feedback | CTRL + Shift + F |
Ieșire din meniuri | Esc |
Setări editor | CTRL + Shift + S |
Schimbare stil editor | CTRL + Shift + E |
Șabloane de cod | CTRL + Shift + 1/2/3 |
Golire editor | CTRL + Shift + 4 |
Dându-se un șir de caractere s[]
, să se oglindească (inverseze) șirul, astfel încât primul caracter să se interschimbe cu ultimul caracter, al doilea caracter cu penultimul și așa mai departe.
Exemplu. Pentru șirul pisica
, după inversare, se obține acisip
.
Fie lungimea șirului n
. Atunci, ne dorim să interschimbăm poziția 0
(primul caracter) cu poziția n - 1
(ultimul caracter), poziția 1
(al doilea caracter) cu poziția n - 2
(penultimul caracter) și așa mai departe până la mijlocul șirului.
Mai exact, ca o regulă generală, caracterul de pe poziția i
se va interschimba cu cel de pe poziția n - i - 1
, cât timp i ≤ n - i - 1
, adică 2 * i ≤ n - 1
.
Următorul cod oglindește un șir de caractere citit de la tastatură, folosind algoritmul explicat mai sus.
#include <iostream>
#include <cstring> //Pentru funcția strlen
using namespace std;
int main()
{
//Declarăm și citim șirul de caractere s
char s[101];
cin.getline(s, 101);
//Inversăm șirul de caractere s
int n = strlen(s); //Reținem în n lungimea șirului s
for(int i = 0; 2 * i <= n - 1; i++) {
char aux = s[i]; //Interschimbăm cele două caractere
s[i] = s[n - i - 1];
s[n - i - 1] = aux;
}
cout << s; //Afișăm șirul nou
return 0;
}