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 șir de caractere în C++

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.

Explicarea algoritmului

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.

Implementare în C++

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

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

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

© 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