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 n
numere naturale, să se inverseze elementele sale (să se oglindească șirul).
Exemplu: Pentru șirul a = (1, 2, 6, 19, 4)
cu lungimea n = 5
, se afișează inversul 4, 19, 6, 2, 1
.
Să zicem că șirul nostru are lungimea n
. Atunci, pentru a inversa vectorul, trebuie ca:
a[1]
și a[n]
să se interschimbe;a[2]
și a[n - 1]
să se interschimbe;a[3]
și a[n - 2]
să se interschimbe;Vom proceda astfel: ne creăm doi indici, i
și j
, inițial egali cu 1
, respectiv cu n
. La fiecare pas, interschimbăm elementele a[i]
și a[j]
, incrementăm i
(i++
) și decrementăm j
(j--
). Astfel, valorile lui i
și j
vor fi exact cele de mai sus (1, n
; 2, n - 1
; 3, n - 2
; …). Ne oprim atunci când i ≥ j
, adică la jumătatea șirului (ca să nu interschimbăm de două ori elementele).
Implementarea C++ este următoarea:
#include <iostream>
using namespace std;
int main()
{
//Declarăm și citim vectorul
int n, a[101];
cin >> n; //n = lungimea vectorului a
for(int i = 1; i <= n; i++) {
cin >> a[i];
}
int i = 1, j = n;
while(i <= j) {
//Interschimbăm a[i] și a[j]
int aux = a[i];
a[i] = a[j];
a[j] = aux;
//Trecem la următoarele elemente: a[i + 1] și a[j - 1]
i++;
j--;
}
return 0;
}