Contact și feedback

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.

Shortcuturi

Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.

Generale

Meniu shortcuturi?
Căutare probleme sau utilizatori/
Navigare printre rezultatele căutării↑, ↓
Meniu de contact și feedbackCTRL + Shift + F
Ieșire din meniuriEsc

Editor probleme

Setări editorCTRL + Shift + S
Schimbare stil editorCTRL + Shift + E
Șabloane de codCTRL + Shift + 1/2/3
Golire editorCTRL + Shift + 4

Inversarea unui vector în C++

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.

Cum se inversează un vector în C++

Să zicem că șirul nostru are lungimea n. Atunci, pentru a inversa vectorul, trebuie ca:

  • elementele a[1] și a[n] să se interschimbe;
  • elementele a[2] și a[n - 1] să se interschimbe;
  • elementele a[3] și a[n - 2] să se interschimbe;

Algoritmul de inversare a unui tablou unidimensional

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;
}

Alte resurse sau bibliografie

Obține medalia mult dorită. Devino As la olimpiadă.

Curs complet de olimpiadă, pregătit de olimpici de la Oxford și TU Delft.

Cuprinsul lecției

Se încarcă…

Citește și

Căutare binară în C++Al N-lea termen Fibonacci în C++Vectori de frecvență (de apariții) în C++Oglinditul unui număr în C++Vectorii în C++: citire și afișareInstrucțiunea for (structuri repetitive)Cum să calculezi instant 2 la puterea N în C++Ce este o funcție void în C++?Indicatorul lui Euler în C++Distanța dintre două puncte în C++Numărul de cifre ale factorialului unui numărVerifică dacă un bit de pe o anumită poziție este 1 sau 0 în C++Maximul și minimul unui vector în C++Numărul de divizori al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Vectorii în C++: declarare și parcurgereNumărul de apariții al unui număr într-un vector în C++Ridicarea la putere în timp logaritmic în C++. Exponențiere rapidăRădăcina cubică a unui număr în C++ (cube root)Ce înseamnă variabilă globală și locală în C++?Verificare dacă șir de caractere este palindrom în C++Materia pentru olimpiada de informatică - tot ce trebuie să știiCifrele unui număr. Prelucrarea cifrelor unui număr în C++Funcții în C++. Ce sunt subprogrameleVerifică dacă un număr aparține șirului Fibonacci în C++Cel mai mic număr cu suma cifrelor N în C++Transformarea unei litere mici în literă mare în C++Cea mai lungă secvență de elemente crescătoare în C++Citirea și afișarea matricelor în C++Complexitatea unui algoritm (timp și spațiu) în C++Verifică dacă un caracter este cifră în C++Cel mai puțin semnificativ bit în C++Inversarea unui șir de caractere în C++Transformarea unui număr din baza 2 în baza 10 în C++Generarea șirului Fibonacci generalizat în C++Al N-lea termen dintr-o progresie aritmeticăVerificarea unui an bisect în C++Structuri repetitive (while, do while, for, etc)Recursivitate în C++Al N-lea termen dintr-o progresie geometricăRadicalul unui număr în C++ (rădăcina pătrată)Cifra maximă și minimă a unui număr în C++De ce cer unele probleme răspunsul modulo 666013 sau modulo 1.000.000.007?Verificare dacă un număr este palindrom în C++Câte numere naturale sunt într-un interval dat? (C++)Numărul permutărilor în C++ (formula permutărilor)Aflarea sumei primelor N sume GaussIndicatorul lui Euler al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Matrice în C++. Declararea și parcurgerea tablourilor bidimensionaleMatrice Fibonacci - al n-lea termen Fibonacci în timp logaritmicVerifică dacă o literă este vocală în C++Valoarea absolută (modulul) unui număr în C++Numărul de divizori primi ai unui număr în C++CMMMC a două numere în C++ (cel mai mic multiplu comun)Citește un șir de caractere cu spații în C++Aria și circumferința unui cerc în C++Interclasarea a doi vectori în C++Cum să citești și să afișezi în fișiere în C++CMMDC recursiv a două numere naturale în C++Numărul minim de peroane pentru o gară în C++Verifică dacă trei puncte sunt coliniare C++Operații cu numere mari în C++ - Toate funcțiile explicateMaximul și minimul a n valori în C++Instrucțiunea while (structuri repetitive)Maximul și minimul a două valori în C++Sortare crescătoare recursivă în C++ - Merge sort și Bubble sortInstrucțiunea do while (structuri repetitive)Tipul struct în C++. Ce sunt structurile de date neomogenePrima cifră a unui număr în C++Suma numerelor naturale dintr-un interval dat în C++Ciurul lui Eratostene în C++Tutorial instalare CodeBlocks (ușor) - Introducere în informatică C++Transformarea unei litere mari în literă mică în C++Suma divizorilor numerelor de la 1 la N (Folosind ciurul lui Eratostene)Ce înseamnă endl în C++?Cel mai semnificativ bit în C++Do while vs while în C++ - Care e diferența?Suma elementelor unui vector recursiv în C++Transformarea unui număr din baza 10 în baza 2 în C++Copiuțe: Cifrele unui numărNumărul aranjamentelor în C++ (formula aranjamentelor)Cum să afișezi partea întreagă a unui număr real în C++Matrice pătratice în C++. Diagonala principală și secundarăCel mai mare divizor comun (CMMDC) a două numere în C++Verifică dacă un număr dat este o putere de 2 în C++Suma divizorilor unui număr în C++Divide et Impera (metodă de programare C++)Află secolul unui an citit de la tastatură în C++Mediana unui șir de valori în C++Șiruri de caractere în C++. Tot ce trebuie să știiCombinatorică în C++: permutări, aranjamente, combinări și alteleCifra de control a unui numărPointer în C++. Variabile de tipul char * (char steluță)Tipuri de date în C++: numere întregi, reale, caractere și alteleInversarea unui vector în C++Ce este o variabilă unsigned în C++?Numere triunghiulare. Verificarea unui număr triunghiularAfișarea elementelor unui vector recursiv în C++Verifică dacă un număr este par sau impar fără modulo în C++Factorialul unui număr în C++Verifică dacă un caracter este literă în C++Verifică dacă o literă este mică sau mare în C++Verificare număr prim în C++ (Clasa a IX-a)Bordarea unei matrice în C++Instrucțiunea break (structuri repetitive)Comentarii în C++Aplicații cu ciurul lui Eratostene în C++: suma divizorilor, numărul divizorilorNumărul combinărilor în C++ (formula combinărilor)Funcții predefinite în C++ (matematice, șiruri de caractere)Șirul lui Fibonacci în C++Cel mai frecvent element dintr-un șir în C++Calculul combinărilor de n luate câte k (nCk) în C++Instrucțiunea continue (structuri repetitive)Cel mai mic/mare divizor prim al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Aria unui triunghi folosind coordonatele acestora în C++Cifra maximă a unui număr recursiv în C++Instrucțiunea de decizie în C++: if, else, switch, caseNumărul de divizori al unui număr în C++Suma 1 + 2 + 3 + ... + N în C++Codul ASCII (tabel complet)Algoritm recursiv pentru căutare binară (clasa a X-a)Oglinditul recursiv al unui număr în C++Maximul și minimul a trei valori în C++Interschimbarea a două variabile în C++ (3 metode)Afișarea divizorilor primi ai unui număr în C++

© Drepturi de autor

Echipa InfoAs își rezervă drepturile de autor pentru conținutul acestei pagini. Copierea conținutului fără acordul scris expres al InfoAs reprezintă o încălcare a Legii 8/1996 și va fi tratată ca atare.

Trimite lecția

Toată lecția

Doar videoclipul pe YouTube

Informatica devine ușoară cu InfoAs

Intră în cont