Sirurile de caractere în C++ sunt un concept esențial pentru... Afișează mai mult
Înscrie-te pentru a vedea CONȚINUTULE gratuit!
Acces la toate documentele
Îmbunătățește notele tale!
Alătură-te milioanelor de elevi
Knowunity AI
Mai mult
Materii
Triangle Congruence and Similarity Theorems
Triangle Properties and Classification
Linear Equations and Graphs
Geometric Angle Relationships
Trigonometric Functions and Identities
Equation Solving Techniques
Circle Geometry Fundamentals
Division Operations and Methods
Basic Differentiation Rules
Exponent and Logarithm Properties
Afișează toate materiile
Human Organ Systems
Reproductive Cell Cycles
Biological Sciences Subdisciplines
Cellular Energy Metabolism
Autotrophic Energy Processes
Inheritance Patterns and Principles
Biomolecular Structure and Organization
Cell Cycle and Division Mechanics
Cellular Organization and Development
Biological Structural Organization
Afișează toate materiile
Chemical Sciences and Applications
Atomic Structure and Composition
Molecular Electron Structure Representation
Atomic Electron Behavior
Matter Properties and Water
Mole Concept and Calculations
Gas Laws and Behavior
Periodic Table Organization
Chemical Thermodynamics Fundamentals
Chemical Bond Types and Properties
Afișează toate materiile
European Renaissance and Enlightenment
European Cultural Movements 800-1920
American Revolution Era 1763-1797
American Civil War 1861-1865
Global Imperial Systems
Mongol and Chinese Dynasties
U.S. Presidents and World Leaders
Historical Sources and Documentation
World Wars Era and Impact
World Religious Systems
Afișează toate materiile
Classic and Contemporary Novels
Literary Character Analysis
Rhetorical Theory and Practice
Classic Literary Narratives
Reading Analysis and Interpretation
Narrative Structure and Techniques
English Language Components
Influential English-Language Authors
Basic Sentence Structure
Narrative Voice and Perspective
Afișează toate materiile
275
•
Actualizat Mar 19, 2026
•
Ioana
@ioana9
Sirurile de caractere în C++ sunt un concept esențial pentru... Afișează mai mult
















Sirurile de caractere în C++ sunt colecții de caractere stocate succesiv în memorie. Trebuie să înțelegi funcțiile principale pentru manipularea lor.
Funcția strlen(s) returnează lungimea efectivă a sirului, adică numărul de caractere până la caracterul null ('\0'). Când lucrezi cu siruri, această funcție este esențială pentru a itera prin toate caracterele.
Funcția strcpy(destinație, sursă) copiază conținutul unui sir în altul. Un exemplu clasic este strcpy care copiază în s2 sirului s începând de la poziția 4.
💡 Amintește-ți că indicii în sirurile de caractere încep de la 0, iar orice sir valid se termină cu '\0'.
Funcția strcat(destinație, sursă) concatenează (adaugă) sirul sursă la finalul sirului destinație. Funcția strchr(sir, caracter) caută prima apariție a unui caracter într-un sir și returnează un pointer către acea poziție sau NULL dacă nu găsește caracterul.
Pentru verificarea condițiilor în siruri (dacă un caracter este literă mică, mare, cifră), se folosesc operatorii de comparație și intervalele de caractere ASCII, cum ar fi s[i]>='a' && s[i]<='z' pentru a verifica dacă caracterul este literă mică.

Când elimini caractere dintr-un sir, o tehnică frecventă este folosirea strcpy care "șterge" caracterul de la poziția i prin suprascriere cu restul sirului. Această operație trebuie folosită cu atenție în bucle, deoarece lungimea sirului se modifică.
Pentru iterarea prin sir și manipularea caracterelor specifice, putem folosi bucle combinate cu funcții precum strchr. De exemplu, pentru eliminarea vocalelor:
while (i<strlen(s))
if (strchr("aeiou", s[i]) != NULL)
strcpy(s+i, s+i+1);
else
i++;
Compararea sirurilor se realizează cu strcmp(s1, s2), care returnează 0 dacă sirurile sunt identice, o valoare negativă dacă s1 este lexicografic mai mic decât s2, sau o valoare pozitivă în caz contrar.
Când modifici un sir în timpul iterării, trebuie să fii atent la actualizarea indexurilor. Dacă elimini un caracter, nu trebuie să incrementezi indexul, deoarece următorul caracter s-a mutat deja la poziția curentă.
💡 După fiecare operație care modifică un sir, verifică dacă trebuie să actualizezi și alți indici sau contori!

Funcția strstr(sir, subsir) este extrem de utilă - caută un subsir în cadrul unui sir mai mare și returnează un pointer către prima apariție sau NULL dacă subsirul nu este găsit. Poți combina această funcție cu alte operații pentru manipulări complexe.
Pentru a verifica dacă un caracter face parte dintr-un set specific, folosește:
if(strchr("aeiou", s[i]) != NULL)
// caracterul s[i] este o vocală
Palindromul este un concept important - un sir care se citește la fel de la stânga la dreapta și de la dreapta la stânga. Pentru a verifica dacă un sir este palindrom, compari caracterele de la început cu cele de la sfârșit:
i=0; j=strlen(s)-1;
while (i<j)
if (s[i] != s[j]) return false;
else { i++; j--; }
return true;
💡 Când lucrezi cu expresii complicate care implică siruri, analizează pas cu pas ce face fiecare funcție și urmărește cum se modifică valorile variabilelor.
Transformarea între litere mari și mici se realizează folosind diferența dintre codurile ASCII: s[i] = s[i] - transformă o literă mică în litera mare corespunzătoare.

Funcția strncpy(dest, src, n) copiază cel mult n caractere din src în dest. Este utilă când vrei să copiezi doar o porțiune dintr-un sir.
Când lucrezi cu siruri în C++, gestionarea memoriei este esențială. După operații precum strncpy, trebuie adesea să adaugi manual caracterul nul:
strncpy(s, "informatica", 5);
s[5] = '\0'; // Asigurăm terminarea corectă a sirului
Numărarea caracterelor specifice dintr-un sir este o operație frecventă. De exemplu, pentru a număra cifrele:
k = 0;
for (i=0; i<strlen(s); i++)
if (s[i]>='0' && s[i]<='9')
k++;
Compararea sirurilor folosind strcmp este esențială pentru verificarea egalității. Expresia strcmp(s1, s2)==0 este adevărată când s1 și s2 sunt identice.
💡 Amintește-ți că
strcmpeste sensibil la majuscule, deci "abc" și "ABC" sunt considerate diferite!
Pentru a lucra cu caractere specifice într-un sir, poți folosi bucle for combinate cu condiții pentru a identifica și procesa doar caracterele dorite (litere, cifre, semne de punctuație).

Verificarea parității lungimii unui sir se face elegant cu expresia strlen(s) % 2 == 0. Acest lucru este util în multe probleme practice.
Când concatenezi siruri folosind strcat, trebuie să te asiguri că sirul destinație are suficient spațiu alocat pentru a primi și caracterele din sirul sursă:
char s3[50] = "ritm";
strcat(s3, s1); // s3 devine "ritmalgoritmi"
Funcția strcat adaugă sirul sursă la finalul sirului destinație și actualizează automat caracterul nul.
Pentru a găsi anumite caracterele într-un sir, poți folosi strchr. O expresie ca strchr(s, 'a') != 0 && strchr(s, 'b') != 0 verifică dacă sirul s conține atât caracterul 'a' cât și caracterul 'b'.
Extragerea subșirurilor se realizează folosind combinații de funcții precum strstr și strcpy. De exemplu, pentru a extrage un subsir după un anumit caracter:
strcpy(s, strstr(s, "+")+1); // Copiază în s textul de după primul "+"
💡 În probleme reale, va trebui adesea să combini mai multe funcții de sir pentru a obține rezultatul dorit. Scrie și testează codul pas cu pas!

Transformarea literelor între majuscule și minuscule este o operație frecventă. Diferența dintre codul ASCII al unei litere mari și al celei mici corespunzătoare este constantă:
for(i=0; i<strlen(x); i++)
if(x[i] >='A' && x[i] <='N')
x[i] = x[i] + 'a'-'A'; // Transformă în literă mică
Verificarea proprietăților unui sir este esențială în multe aplicații. Pentru a verifica dacă un sir conține doar cifre:
bool numericOnly = true;
for(i=0; i<strlen(s); i++)
if(s[i]<'0' || s[i]>'9')
numericOnly = false;
Când lucrezi cu palindroame, verificarea se simplifică pentru siruri de lungime fixă. Pentru un sir de 3 caractere, verifici doar dacă s[0]==s[2].
💡 În probleme complexe, împarte soluția în pași mai mici. De exemplu, pentru a verifica dacă un sir conține doar litere, mai întâi definește ce înseamnă "literă" și apoi verifică fiecare caracter.
Funcțiile de sir combinate cu bucle condiționate pot crea algoritmi puternici. De exemplu, pentru a filtra doar literele dintr-un sir:
for(i=0; i<strlen(s); i++)
if((s[i]>='a' && s[i]<='z') || (s[i]>='A' && s[i]<='Z'))
cout<<s[i];

Funcțiile de prelucrare a sirurilor îți permit să rezolvi probleme complexe prin combinarea lor inteligentă. Iată câteva tehnici esențiale:
Generarea prefixelor unui sir înseamnă afișarea tuturor subșirurilor care încep de la primul caracter:
for(i=1; i<=strlen(s); i++) {
strncpy(temp, s, i);
temp[i] = '\0';
cout << temp << endl;
}
Generarea sufixelor implică afișarea tuturor subșirurilor care se termină cu ultimul caracter:
for(i=0; i<strlen(s); i++) {
cout << s+i << endl;
}
💡 Mulți algoritmi eficienți pentru siruri încep prin identificarea caracteristicilor importante ale datelor, cum ar fi separatorii, vocalele sau cifrele.
Probleme precum înlocuirea vocalelor cu perechi vocală-Vocală se rezolvă parcurgând sirul și identificând vocalele:
for(i=0; i<strlen(s); i++) {
if(strchr("aeiou", s[i]) != NULL) {
// Înlocuiește cu vocala urmată de versiunea sa majusculă
}
}
Transformarea textului cu reguli specifice, cum ar fi capitalizarea primelor litere, este utilă în multe aplicații practice:
bool newWord = true;
for(i=0; i<strlen(s); i++) {
if(s[i] == ' ') newWord = true;
else if(newWord) {
s[i] = toupper(s[i]);
newWord = false;
}
}

Când lucrezi cu texte și propoziții complexe, trebuie să manipulezi sirurile la nivel de cuvânt. Pentru a extrage cuvinte dintr-un text, poți folosi separatori precum spațiile:
char *p = strtok(text, " ");
while(p != NULL) {
// Prelucrează cuvântul p
p = strtok(NULL, " ");
}
Problema găsirii clonelor (variante ale unui cuvânt cu o vocală eliminată) este un exemplu bun de algoritm recursiv pentru siruri:
for(char v : "aeiou") {
// Creează o clonă eliminând vocala v
// Afișează clona
}
Pentru a rezolva problema căutării celui mai lung sufix comun, compari caracterele de la sfârșitul sirurilor:
i = strlen(s1) - 1;
j = strlen(s2) - 1;
while(i >= 0 && j >= 0 && s1[i] == s2[j]) {
i--; j--;
}
// Extrage sufixul comun
💡 În probleme complexe, desenează pe hârtie ce se întâmplă cu sirurile pas cu pas. Este mult mai ușor să vizualizezi operațiile decât să încerci să le păstrezi toate în minte.
Pentru a găsi secvențe de caractere care respectă anumite reguli (de exemplu, perechi de caractere identice), folosește o buclă pentru a verifica fiecare poziție:
for(i=0; i<strlen(s)-1; i++) {
if(s[i] == s[i+1]) {
cout << s[i] << s[i+1] << endl;
}
}

Pentru a rezolva problemele cu siruri de caractere, este esențial să înțelegi cum se execută codul pas cu pas. Urmărirea execuției îți permite să vezi cum se modifică valorile variabilelor.
Problema abcdefghoid devine abedghd după eliminarea vocalelor. Iată cum se execută algoritmul:
i=0: 'a' este vocală -> elimină -> s="bcdefghoid", i rămâne 0
i=0: 'b' nu este vocală -> i=1
i=1: 'c' nu este vocală -> i=2
i=2: 'd' nu este vocală -> i=3
i=3: 'e' este vocală -> elimină -> s="bcdfghoid", i rămâne 3
... și așa mai departe
💡 Pentru a evita erorile, scrie pe hârtie starea sirului după fiecare operație, mai ales când lucrezi cu bucle și modifici sirul în proces.
Pentru problema cu palindromul, analizând abcduecda, algoritmul verifică dacă caracterele de la pozițiile simetrice sunt egale:
s[0]='a' și s[8]='a' -> sunt egale -> continuă
s[1]='b' și s[7]='d' -> nu sunt egale -> nu este palindrom
Algoritmul care elimină anumite caractere și apoi verifică restul trebuie urmărit cu atenție, deoarece lungimea sirului se modifică în timpul execuției.

Pentru problema în care se afișează doar caracterele care nu sunt cifre din bac 2009, algoritmul parcurge sirul și verifică fiecare caracter:
s[0]='b': nu este cifră -> afișează 'b'
s[1]='a': nu este cifră -> afișează 'a'
s[2]='c': nu este cifră -> afișează 'c'
s[3]=' ': nu este cifră -> afișează ' '
s[4]='2': este cifră -> ignoră
...
Rezultatul va fi "bac ".
În problema unde a = "alphabet" și se execută strlen, rezultatul este 5 deoarece:
s+2 reprezintă sirul începând de la poziția 2: "phabet"strcpy copiază "phabet" în sstrlen(s) returnează lungimea lui s, care acum este 6💡 Când operezi cu funcții care returnează pointeri la siruri, cum ar fi
strstrsaustrchr, asigură-te că verifici dacă rezultatul nu este NULL înainte de a-l folosi!
Pentru a verifica dacă un sir este palindrom, compari primul caracter cu ultimul, al doilea cu penultimul și așa mai departe:
bool isPalindrome = true;
for(i=0; i<strlen(s)/2; i++) {
if(s[i] != s[strlen(s)-i-1]) {
isPalindrome = false;
break;
}
}
Problemele complexe se rezolvă adesea prin descompunerea lor în subprobleme mai simple și aplicarea tehnicilor de bază pentru siruri.





Companionul nostru AI este creat special pentru nevoile studenților. Bazându-ne pe milioanele de materiale de pe platformă, putem oferi răspunsuri exacte și relevante pentru studenți. Dar nu este vorba doar despre răspunsuri, companionul este mai ales despre ghidarea studenților prin provocările zilnice de învățare, cu planuri de studiu personalizate, chestionare sau conținuturi în chat și personalizare 100% bazată pe abilitățile și evoluțiile studenților.
Aplicația este disponibilă în Google Play Store și Apple App Store.
Da! Bucură-te de access la materiale de studiu, conectează-te cu alți elevi, și primește ajutor instant - toate acestea la un click distanță. În plus, câștigă puncte ca să deblochezi mai multe funcționalități!
App Store
Google Play
Aplicația este foarte ușor de utilizat și bine concepută. Am găsit tot ce căutam până acum și am reușit să învăț multe din prezentări! Cu siguranță voi folosi aplicația pentru o temă la clasă! Și desigur, ajută mult ca sursă de inspirație.
Ștefan S
utilizator iOS
Această aplicație este super. Sunt atât de multe materiale de studiu și ajutor pentru elevi [...]. Materia mea mai problematică este franceza, de exemplu, și aplicația oferă foarte multe materiale ajutătoare. Mulțumită acestei aplicații, mi-am îmbunătățit franceza. Aș recomanda-o oricui.
Samantha Klich
utilizator Android
Wow, sunt cu adevărat impresionat. Am încercat aplicația pentru că am văzut-o promovată de multe ori și am rămas uimit. Aceasta este AJUTORUL de care ai nevoie pentru școală și, mai presus de toate, oferă atât de multe lucruri, precum exerciții și fișe de informații, care mi-au fost FOARTE de ajutor.
Anna
utilizator iOS
Te ajută să înveți foarte repede și ști foarte bine ce ai dori tu să înveți, vă recomand cu drag să încercați și să învățați mai repede.!
Thomas R
utilizator iOS
Foarte bună aplicația!!!! Mă ajută să înțeleg mult mai bine lecțiile și temele le termin mult mai repede.👍❤️
Paul P
utilizator Android
Te ajută foarte bine la teme acest robot,recomand!
David K
utilizator iOS
Aplicația e grozavă! Tot ce trebuie să fac este să introduc subiectul în bara de căutare și primesc răspunsul foarte rapid. Nu mai trebuie să mă uit la 10 videoclipuri pe YouTube pentru a înțelege ceva, deci îmi economisesc timpul. Super recomandat!
Sudenaz Ocak
utilizator Android
La școală eram chiar slab la matematică, dar datorită aplicației, mă descurc mai bine acum. Sunt atât de recunoscător că ai creat aplicația.
Greenlight Bonnie
utilizator Android
Această aplicație e super interesantă și seamănă ca tiktok-ul doar că tu ai doar teorie și explicații.
Karla S
utilizator Android
Nu mai trebuie să stau cu orele să învăț după caiet când pot să citesc de 2 ori lecțiile care apar aici și iau 10 la test ! Knowunity m-a ajutat să iau nota 9,20 la română ! Voi recomanda ff tare aceasta aplicate , să nu uităm ca are și chat GPT !👍🏻
Denisa B
utilizator iOS
CHESTIONARELE ȘI FLASHCARD-URILE SUNT ATÂT DE UTILE ȘI IUBESC Knowunity AI. E LITERALMENTE CA CHATGPT DOAR CĂ MAI DEȘTEPT!! M-A AJUTAT ȘI CU PROBLEMELE MELE CU MASCARA!! PLUS CU MATERIILE MELE ADEVĂRATE! EVIDENT 😍😁😲🤑💗✨🎀😮
Sarah L
utilizator Android
Este foarte bună te ajută la teme te face să înțelegi lecțiile am înțeles o lecție în 20 de minute i singură nu reușeam să o învăț dar cu Knowunity am învățat-o foarte ușor
Alessia V
utilizator iOS
Aplicația este foarte ușor de utilizat și bine concepută. Am găsit tot ce căutam până acum și am reușit să învăț multe din prezentări! Cu siguranță voi folosi aplicația pentru o temă la clasă! Și desigur, ajută mult ca sursă de inspirație.
Ștefan S
utilizator iOS
Această aplicație este super. Sunt atât de multe materiale de studiu și ajutor pentru elevi [...]. Materia mea mai problematică este franceza, de exemplu, și aplicația oferă foarte multe materiale ajutătoare. Mulțumită acestei aplicații, mi-am îmbunătățit franceza. Aș recomanda-o oricui.
Samantha Klich
utilizator Android
Wow, sunt cu adevărat impresionat. Am încercat aplicația pentru că am văzut-o promovată de multe ori și am rămas uimit. Aceasta este AJUTORUL de care ai nevoie pentru școală și, mai presus de toate, oferă atât de multe lucruri, precum exerciții și fișe de informații, care mi-au fost FOARTE de ajutor.
Anna
utilizator iOS
Te ajută să înveți foarte repede și ști foarte bine ce ai dori tu să înveți, vă recomand cu drag să încercați și să învățați mai repede.!
Thomas R
utilizator iOS
Foarte bună aplicația!!!! Mă ajută să înțeleg mult mai bine lecțiile și temele le termin mult mai repede.👍❤️
Paul P
utilizator Android
Te ajută foarte bine la teme acest robot,recomand!
David K
utilizator iOS
Aplicația e grozavă! Tot ce trebuie să fac este să introduc subiectul în bara de căutare și primesc răspunsul foarte rapid. Nu mai trebuie să mă uit la 10 videoclipuri pe YouTube pentru a înțelege ceva, deci îmi economisesc timpul. Super recomandat!
Sudenaz Ocak
utilizator Android
La școală eram chiar slab la matematică, dar datorită aplicației, mă descurc mai bine acum. Sunt atât de recunoscător că ai creat aplicația.
Greenlight Bonnie
utilizator Android
Această aplicație e super interesantă și seamănă ca tiktok-ul doar că tu ai doar teorie și explicații.
Karla S
utilizator Android
Nu mai trebuie să stau cu orele să învăț după caiet când pot să citesc de 2 ori lecțiile care apar aici și iau 10 la test ! Knowunity m-a ajutat să iau nota 9,20 la română ! Voi recomanda ff tare aceasta aplicate , să nu uităm ca are și chat GPT !👍🏻
Denisa B
utilizator iOS
CHESTIONARELE ȘI FLASHCARD-URILE SUNT ATÂT DE UTILE ȘI IUBESC Knowunity AI. E LITERALMENTE CA CHATGPT DOAR CĂ MAI DEȘTEPT!! M-A AJUTAT ȘI CU PROBLEMELE MELE CU MASCARA!! PLUS CU MATERIILE MELE ADEVĂRATE! EVIDENT 😍😁😲🤑💗✨🎀😮
Sarah L
utilizator Android
Este foarte bună te ajută la teme te face să înțelegi lecțiile am înțeles o lecție în 20 de minute i singură nu reușeam să o învăț dar cu Knowunity am învățat-o foarte ușor
Alessia V
utilizator iOS
Ioana
@ioana9
Sirurile de caractere în C++ sunt un concept esențial pentru orice programator. Această lecție analizează diverse operații, manipulări și funcții specifice pentru lucrul cu siruri în C++, de la probleme simple până la aplicații practice complexe.

Acces la toate documentele
Îmbunătățește notele tale!
Alătură-te milioanelor de elevi
Sirurile de caractere în C++ sunt colecții de caractere stocate succesiv în memorie. Trebuie să înțelegi funcțiile principale pentru manipularea lor.
Funcția strlen(s) returnează lungimea efectivă a sirului, adică numărul de caractere până la caracterul null ('\0'). Când lucrezi cu siruri, această funcție este esențială pentru a itera prin toate caracterele.
Funcția strcpy(destinație, sursă) copiază conținutul unui sir în altul. Un exemplu clasic este strcpy care copiază în s2 sirului s începând de la poziția 4.
💡 Amintește-ți că indicii în sirurile de caractere încep de la 0, iar orice sir valid se termină cu '\0'.
Funcția strcat(destinație, sursă) concatenează (adaugă) sirul sursă la finalul sirului destinație. Funcția strchr(sir, caracter) caută prima apariție a unui caracter într-un sir și returnează un pointer către acea poziție sau NULL dacă nu găsește caracterul.
Pentru verificarea condițiilor în siruri (dacă un caracter este literă mică, mare, cifră), se folosesc operatorii de comparație și intervalele de caractere ASCII, cum ar fi s[i]>='a' && s[i]<='z' pentru a verifica dacă caracterul este literă mică.

Acces la toate documentele
Îmbunătățește notele tale!
Alătură-te milioanelor de elevi
Când elimini caractere dintr-un sir, o tehnică frecventă este folosirea strcpy care "șterge" caracterul de la poziția i prin suprascriere cu restul sirului. Această operație trebuie folosită cu atenție în bucle, deoarece lungimea sirului se modifică.
Pentru iterarea prin sir și manipularea caracterelor specifice, putem folosi bucle combinate cu funcții precum strchr. De exemplu, pentru eliminarea vocalelor:
while (i<strlen(s))
if (strchr("aeiou", s[i]) != NULL)
strcpy(s+i, s+i+1);
else
i++;
Compararea sirurilor se realizează cu strcmp(s1, s2), care returnează 0 dacă sirurile sunt identice, o valoare negativă dacă s1 este lexicografic mai mic decât s2, sau o valoare pozitivă în caz contrar.
Când modifici un sir în timpul iterării, trebuie să fii atent la actualizarea indexurilor. Dacă elimini un caracter, nu trebuie să incrementezi indexul, deoarece următorul caracter s-a mutat deja la poziția curentă.
💡 După fiecare operație care modifică un sir, verifică dacă trebuie să actualizezi și alți indici sau contori!

Acces la toate documentele
Îmbunătățește notele tale!
Alătură-te milioanelor de elevi
Funcția strstr(sir, subsir) este extrem de utilă - caută un subsir în cadrul unui sir mai mare și returnează un pointer către prima apariție sau NULL dacă subsirul nu este găsit. Poți combina această funcție cu alte operații pentru manipulări complexe.
Pentru a verifica dacă un caracter face parte dintr-un set specific, folosește:
if(strchr("aeiou", s[i]) != NULL)
// caracterul s[i] este o vocală
Palindromul este un concept important - un sir care se citește la fel de la stânga la dreapta și de la dreapta la stânga. Pentru a verifica dacă un sir este palindrom, compari caracterele de la început cu cele de la sfârșit:
i=0; j=strlen(s)-1;
while (i<j)
if (s[i] != s[j]) return false;
else { i++; j--; }
return true;
💡 Când lucrezi cu expresii complicate care implică siruri, analizează pas cu pas ce face fiecare funcție și urmărește cum se modifică valorile variabilelor.
Transformarea între litere mari și mici se realizează folosind diferența dintre codurile ASCII: s[i] = s[i] - transformă o literă mică în litera mare corespunzătoare.

Acces la toate documentele
Îmbunătățește notele tale!
Alătură-te milioanelor de elevi
Funcția strncpy(dest, src, n) copiază cel mult n caractere din src în dest. Este utilă când vrei să copiezi doar o porțiune dintr-un sir.
Când lucrezi cu siruri în C++, gestionarea memoriei este esențială. După operații precum strncpy, trebuie adesea să adaugi manual caracterul nul:
strncpy(s, "informatica", 5);
s[5] = '\0'; // Asigurăm terminarea corectă a sirului
Numărarea caracterelor specifice dintr-un sir este o operație frecventă. De exemplu, pentru a număra cifrele:
k = 0;
for (i=0; i<strlen(s); i++)
if (s[i]>='0' && s[i]<='9')
k++;
Compararea sirurilor folosind strcmp este esențială pentru verificarea egalității. Expresia strcmp(s1, s2)==0 este adevărată când s1 și s2 sunt identice.
💡 Amintește-ți că
strcmpeste sensibil la majuscule, deci "abc" și "ABC" sunt considerate diferite!
Pentru a lucra cu caractere specifice într-un sir, poți folosi bucle for combinate cu condiții pentru a identifica și procesa doar caracterele dorite (litere, cifre, semne de punctuație).

Acces la toate documentele
Îmbunătățește notele tale!
Alătură-te milioanelor de elevi
Verificarea parității lungimii unui sir se face elegant cu expresia strlen(s) % 2 == 0. Acest lucru este util în multe probleme practice.
Când concatenezi siruri folosind strcat, trebuie să te asiguri că sirul destinație are suficient spațiu alocat pentru a primi și caracterele din sirul sursă:
char s3[50] = "ritm";
strcat(s3, s1); // s3 devine "ritmalgoritmi"
Funcția strcat adaugă sirul sursă la finalul sirului destinație și actualizează automat caracterul nul.
Pentru a găsi anumite caracterele într-un sir, poți folosi strchr. O expresie ca strchr(s, 'a') != 0 && strchr(s, 'b') != 0 verifică dacă sirul s conține atât caracterul 'a' cât și caracterul 'b'.
Extragerea subșirurilor se realizează folosind combinații de funcții precum strstr și strcpy. De exemplu, pentru a extrage un subsir după un anumit caracter:
strcpy(s, strstr(s, "+")+1); // Copiază în s textul de după primul "+"
💡 În probleme reale, va trebui adesea să combini mai multe funcții de sir pentru a obține rezultatul dorit. Scrie și testează codul pas cu pas!

Acces la toate documentele
Îmbunătățește notele tale!
Alătură-te milioanelor de elevi
Transformarea literelor între majuscule și minuscule este o operație frecventă. Diferența dintre codul ASCII al unei litere mari și al celei mici corespunzătoare este constantă:
for(i=0; i<strlen(x); i++)
if(x[i] >='A' && x[i] <='N')
x[i] = x[i] + 'a'-'A'; // Transformă în literă mică
Verificarea proprietăților unui sir este esențială în multe aplicații. Pentru a verifica dacă un sir conține doar cifre:
bool numericOnly = true;
for(i=0; i<strlen(s); i++)
if(s[i]<'0' || s[i]>'9')
numericOnly = false;
Când lucrezi cu palindroame, verificarea se simplifică pentru siruri de lungime fixă. Pentru un sir de 3 caractere, verifici doar dacă s[0]==s[2].
💡 În probleme complexe, împarte soluția în pași mai mici. De exemplu, pentru a verifica dacă un sir conține doar litere, mai întâi definește ce înseamnă "literă" și apoi verifică fiecare caracter.
Funcțiile de sir combinate cu bucle condiționate pot crea algoritmi puternici. De exemplu, pentru a filtra doar literele dintr-un sir:
for(i=0; i<strlen(s); i++)
if((s[i]>='a' && s[i]<='z') || (s[i]>='A' && s[i]<='Z'))
cout<<s[i];

Acces la toate documentele
Îmbunătățește notele tale!
Alătură-te milioanelor de elevi
Funcțiile de prelucrare a sirurilor îți permit să rezolvi probleme complexe prin combinarea lor inteligentă. Iată câteva tehnici esențiale:
Generarea prefixelor unui sir înseamnă afișarea tuturor subșirurilor care încep de la primul caracter:
for(i=1; i<=strlen(s); i++) {
strncpy(temp, s, i);
temp[i] = '\0';
cout << temp << endl;
}
Generarea sufixelor implică afișarea tuturor subșirurilor care se termină cu ultimul caracter:
for(i=0; i<strlen(s); i++) {
cout << s+i << endl;
}
💡 Mulți algoritmi eficienți pentru siruri încep prin identificarea caracteristicilor importante ale datelor, cum ar fi separatorii, vocalele sau cifrele.
Probleme precum înlocuirea vocalelor cu perechi vocală-Vocală se rezolvă parcurgând sirul și identificând vocalele:
for(i=0; i<strlen(s); i++) {
if(strchr("aeiou", s[i]) != NULL) {
// Înlocuiește cu vocala urmată de versiunea sa majusculă
}
}
Transformarea textului cu reguli specifice, cum ar fi capitalizarea primelor litere, este utilă în multe aplicații practice:
bool newWord = true;
for(i=0; i<strlen(s); i++) {
if(s[i] == ' ') newWord = true;
else if(newWord) {
s[i] = toupper(s[i]);
newWord = false;
}
}

Acces la toate documentele
Îmbunătățește notele tale!
Alătură-te milioanelor de elevi
Când lucrezi cu texte și propoziții complexe, trebuie să manipulezi sirurile la nivel de cuvânt. Pentru a extrage cuvinte dintr-un text, poți folosi separatori precum spațiile:
char *p = strtok(text, " ");
while(p != NULL) {
// Prelucrează cuvântul p
p = strtok(NULL, " ");
}
Problema găsirii clonelor (variante ale unui cuvânt cu o vocală eliminată) este un exemplu bun de algoritm recursiv pentru siruri:
for(char v : "aeiou") {
// Creează o clonă eliminând vocala v
// Afișează clona
}
Pentru a rezolva problema căutării celui mai lung sufix comun, compari caracterele de la sfârșitul sirurilor:
i = strlen(s1) - 1;
j = strlen(s2) - 1;
while(i >= 0 && j >= 0 && s1[i] == s2[j]) {
i--; j--;
}
// Extrage sufixul comun
💡 În probleme complexe, desenează pe hârtie ce se întâmplă cu sirurile pas cu pas. Este mult mai ușor să vizualizezi operațiile decât să încerci să le păstrezi toate în minte.
Pentru a găsi secvențe de caractere care respectă anumite reguli (de exemplu, perechi de caractere identice), folosește o buclă pentru a verifica fiecare poziție:
for(i=0; i<strlen(s)-1; i++) {
if(s[i] == s[i+1]) {
cout << s[i] << s[i+1] << endl;
}
}

Acces la toate documentele
Îmbunătățește notele tale!
Alătură-te milioanelor de elevi
Pentru a rezolva problemele cu siruri de caractere, este esențial să înțelegi cum se execută codul pas cu pas. Urmărirea execuției îți permite să vezi cum se modifică valorile variabilelor.
Problema abcdefghoid devine abedghd după eliminarea vocalelor. Iată cum se execută algoritmul:
i=0: 'a' este vocală -> elimină -> s="bcdefghoid", i rămâne 0
i=0: 'b' nu este vocală -> i=1
i=1: 'c' nu este vocală -> i=2
i=2: 'd' nu este vocală -> i=3
i=3: 'e' este vocală -> elimină -> s="bcdfghoid", i rămâne 3
... și așa mai departe
💡 Pentru a evita erorile, scrie pe hârtie starea sirului după fiecare operație, mai ales când lucrezi cu bucle și modifici sirul în proces.
Pentru problema cu palindromul, analizând abcduecda, algoritmul verifică dacă caracterele de la pozițiile simetrice sunt egale:
s[0]='a' și s[8]='a' -> sunt egale -> continuă
s[1]='b' și s[7]='d' -> nu sunt egale -> nu este palindrom
Algoritmul care elimină anumite caractere și apoi verifică restul trebuie urmărit cu atenție, deoarece lungimea sirului se modifică în timpul execuției.

Acces la toate documentele
Îmbunătățește notele tale!
Alătură-te milioanelor de elevi
Pentru problema în care se afișează doar caracterele care nu sunt cifre din bac 2009, algoritmul parcurge sirul și verifică fiecare caracter:
s[0]='b': nu este cifră -> afișează 'b'
s[1]='a': nu este cifră -> afișează 'a'
s[2]='c': nu este cifră -> afișează 'c'
s[3]=' ': nu este cifră -> afișează ' '
s[4]='2': este cifră -> ignoră
...
Rezultatul va fi "bac ".
În problema unde a = "alphabet" și se execută strlen, rezultatul este 5 deoarece:
s+2 reprezintă sirul începând de la poziția 2: "phabet"strcpy copiază "phabet" în sstrlen(s) returnează lungimea lui s, care acum este 6💡 Când operezi cu funcții care returnează pointeri la siruri, cum ar fi
strstrsaustrchr, asigură-te că verifici dacă rezultatul nu este NULL înainte de a-l folosi!
Pentru a verifica dacă un sir este palindrom, compari primul caracter cu ultimul, al doilea cu penultimul și așa mai departe:
bool isPalindrome = true;
for(i=0; i<strlen(s)/2; i++) {
if(s[i] != s[strlen(s)-i-1]) {
isPalindrome = false;
break;
}
}
Problemele complexe se rezolvă adesea prin descompunerea lor în subprobleme mai simple și aplicarea tehnicilor de bază pentru siruri.

Acces la toate documentele
Îmbunătățește notele tale!
Alătură-te milioanelor de elevi

Acces la toate documentele
Îmbunătățește notele tale!
Alătură-te milioanelor de elevi

Acces la toate documentele
Îmbunătățește notele tale!
Alătură-te milioanelor de elevi

Acces la toate documentele
Îmbunătățește notele tale!
Alătură-te milioanelor de elevi

Acces la toate documentele
Îmbunătățește notele tale!
Alătură-te milioanelor de elevi
Companionul nostru AI este creat special pentru nevoile studenților. Bazându-ne pe milioanele de materiale de pe platformă, putem oferi răspunsuri exacte și relevante pentru studenți. Dar nu este vorba doar despre răspunsuri, companionul este mai ales despre ghidarea studenților prin provocările zilnice de învățare, cu planuri de studiu personalizate, chestionare sau conținuturi în chat și personalizare 100% bazată pe abilitățile și evoluțiile studenților.
Aplicația este disponibilă în Google Play Store și Apple App Store.
Da! Bucură-te de access la materiale de studiu, conectează-te cu alți elevi, și primește ajutor instant - toate acestea la un click distanță. În plus, câștigă puncte ca să deblochezi mai multe funcționalități!
7
Instrumente inteligente NOU
Transformă această notiță în: ✓ 50+ întrebări de exersare ✓ Flashcard-uri interactive ✓ Examen de practică complet ✓ Planuri de eseu
App Store
Google Play
Aplicația este foarte ușor de utilizat și bine concepută. Am găsit tot ce căutam până acum și am reușit să învăț multe din prezentări! Cu siguranță voi folosi aplicația pentru o temă la clasă! Și desigur, ajută mult ca sursă de inspirație.
Ștefan S
utilizator iOS
Această aplicație este super. Sunt atât de multe materiale de studiu și ajutor pentru elevi [...]. Materia mea mai problematică este franceza, de exemplu, și aplicația oferă foarte multe materiale ajutătoare. Mulțumită acestei aplicații, mi-am îmbunătățit franceza. Aș recomanda-o oricui.
Samantha Klich
utilizator Android
Wow, sunt cu adevărat impresionat. Am încercat aplicația pentru că am văzut-o promovată de multe ori și am rămas uimit. Aceasta este AJUTORUL de care ai nevoie pentru școală și, mai presus de toate, oferă atât de multe lucruri, precum exerciții și fișe de informații, care mi-au fost FOARTE de ajutor.
Anna
utilizator iOS
Te ajută să înveți foarte repede și ști foarte bine ce ai dori tu să înveți, vă recomand cu drag să încercați și să învățați mai repede.!
Thomas R
utilizator iOS
Foarte bună aplicația!!!! Mă ajută să înțeleg mult mai bine lecțiile și temele le termin mult mai repede.👍❤️
Paul P
utilizator Android
Te ajută foarte bine la teme acest robot,recomand!
David K
utilizator iOS
Aplicația e grozavă! Tot ce trebuie să fac este să introduc subiectul în bara de căutare și primesc răspunsul foarte rapid. Nu mai trebuie să mă uit la 10 videoclipuri pe YouTube pentru a înțelege ceva, deci îmi economisesc timpul. Super recomandat!
Sudenaz Ocak
utilizator Android
La școală eram chiar slab la matematică, dar datorită aplicației, mă descurc mai bine acum. Sunt atât de recunoscător că ai creat aplicația.
Greenlight Bonnie
utilizator Android
Această aplicație e super interesantă și seamănă ca tiktok-ul doar că tu ai doar teorie și explicații.
Karla S
utilizator Android
Nu mai trebuie să stau cu orele să învăț după caiet când pot să citesc de 2 ori lecțiile care apar aici și iau 10 la test ! Knowunity m-a ajutat să iau nota 9,20 la română ! Voi recomanda ff tare aceasta aplicate , să nu uităm ca are și chat GPT !👍🏻
Denisa B
utilizator iOS
CHESTIONARELE ȘI FLASHCARD-URILE SUNT ATÂT DE UTILE ȘI IUBESC Knowunity AI. E LITERALMENTE CA CHATGPT DOAR CĂ MAI DEȘTEPT!! M-A AJUTAT ȘI CU PROBLEMELE MELE CU MASCARA!! PLUS CU MATERIILE MELE ADEVĂRATE! EVIDENT 😍😁😲🤑💗✨🎀😮
Sarah L
utilizator Android
Este foarte bună te ajută la teme te face să înțelegi lecțiile am înțeles o lecție în 20 de minute i singură nu reușeam să o învăț dar cu Knowunity am învățat-o foarte ușor
Alessia V
utilizator iOS
Aplicația este foarte ușor de utilizat și bine concepută. Am găsit tot ce căutam până acum și am reușit să învăț multe din prezentări! Cu siguranță voi folosi aplicația pentru o temă la clasă! Și desigur, ajută mult ca sursă de inspirație.
Ștefan S
utilizator iOS
Această aplicație este super. Sunt atât de multe materiale de studiu și ajutor pentru elevi [...]. Materia mea mai problematică este franceza, de exemplu, și aplicația oferă foarte multe materiale ajutătoare. Mulțumită acestei aplicații, mi-am îmbunătățit franceza. Aș recomanda-o oricui.
Samantha Klich
utilizator Android
Wow, sunt cu adevărat impresionat. Am încercat aplicația pentru că am văzut-o promovată de multe ori și am rămas uimit. Aceasta este AJUTORUL de care ai nevoie pentru școală și, mai presus de toate, oferă atât de multe lucruri, precum exerciții și fișe de informații, care mi-au fost FOARTE de ajutor.
Anna
utilizator iOS
Te ajută să înveți foarte repede și ști foarte bine ce ai dori tu să înveți, vă recomand cu drag să încercați și să învățați mai repede.!
Thomas R
utilizator iOS
Foarte bună aplicația!!!! Mă ajută să înțeleg mult mai bine lecțiile și temele le termin mult mai repede.👍❤️
Paul P
utilizator Android
Te ajută foarte bine la teme acest robot,recomand!
David K
utilizator iOS
Aplicația e grozavă! Tot ce trebuie să fac este să introduc subiectul în bara de căutare și primesc răspunsul foarte rapid. Nu mai trebuie să mă uit la 10 videoclipuri pe YouTube pentru a înțelege ceva, deci îmi economisesc timpul. Super recomandat!
Sudenaz Ocak
utilizator Android
La școală eram chiar slab la matematică, dar datorită aplicației, mă descurc mai bine acum. Sunt atât de recunoscător că ai creat aplicația.
Greenlight Bonnie
utilizator Android
Această aplicație e super interesantă și seamănă ca tiktok-ul doar că tu ai doar teorie și explicații.
Karla S
utilizator Android
Nu mai trebuie să stau cu orele să învăț după caiet când pot să citesc de 2 ori lecțiile care apar aici și iau 10 la test ! Knowunity m-a ajutat să iau nota 9,20 la română ! Voi recomanda ff tare aceasta aplicate , să nu uităm ca are și chat GPT !👍🏻
Denisa B
utilizator iOS
CHESTIONARELE ȘI FLASHCARD-URILE SUNT ATÂT DE UTILE ȘI IUBESC Knowunity AI. E LITERALMENTE CA CHATGPT DOAR CĂ MAI DEȘTEPT!! M-A AJUTAT ȘI CU PROBLEMELE MELE CU MASCARA!! PLUS CU MATERIILE MELE ADEVĂRATE! EVIDENT 😍😁😲🤑💗✨🎀😮
Sarah L
utilizator Android
Este foarte bună te ajută la teme te face să înțelegi lecțiile am înțeles o lecție în 20 de minute i singură nu reușeam să o învăț dar cu Knowunity am învățat-o foarte ușor
Alessia V
utilizator iOS