Documente Academic
Documente Profesional
Documente Cultură
Incepem cu cea mai usoara problema: avem un sir de caractere „Ana se duce la piata”
iar noi trebuie sa identificam prima litera din fiecare cuvant. Pentru a rezolva aceasta
problema vom separa mai intai propozitia in cuvinte folosind functia strtok explicata in
tutorialul precedent.
Dupa ce am separat fiecare cuvant din propozitie utilizam cuvant[0] pentru a afisa
fiecare litera din primul cuvant.
#include <iostream>
using namespace std;
int main() {
char propozitie[128] = "Ana se duce la piata";
char *cuvant = strtok(propozitie, " ");
while(cuvant) {
cout << cuvant << " -> prima litera: " << cuvant[0] << "\n";
cuvant = strtok(NULL, " ");
}
return 0;
}
Ultima litera a unui cuvant | Siruri de caractere in C++
Urmatoarea problema este similara cu prima, doar ca de data aceasta trebuie sa afisam
ultima litera. Tot ceea ce trebuie sa facem este sa schimbam cuvant[0] cu
cuvant[strlen(cuvant) – 1] deoarece cu strlen(cuvant) obtinem lungimea totala a
sirului, iar mai apoi scadem -1 deoarece numerotarea incepe de la 0, iar pentru a
ajunge la ultima litera trebuie sa scadem 1.
#include <iostream>
using namespace std;
int main() {
char propozitie[128] = "Ana se duce la piata";
char *cuvant = strtok(propozitie, " ");
while(cuvant) {
cout << cuvant << " -> prima litera: " << cuvant[ strlen(cuvant) - 1 ] << "\n";
cuvant = strtok(NULL, " ");
}
return 0;
}
Vom presupune ca avem un text similar cu cel din problema precedenta: „Ana se duce
la piata” pentru a numara numarul de vocale din acest text, vom face o functie auxiliara
eVocala care va returna true / false in functie de caracterul trimis prin parametru.
1
#include <iostream>
#include <cstring>
using namespace std;
bool eVocala(char c) {
if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u')
return true;
if(c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U')
return true;
return false;
}
int main() {
char propozitie[128] = "Ana se duce la piata";
int lungime = strlen(propozitie);
int vocale = 0;
for(int i = 0; i < lungime; i++) {
if(eVocala(propozitie[i])) {
cout << "Vocala: " << propozitie[i] << "\n";
vocale = vocale + 1;
}
}
cout << "Avem: " << vocale << " vocale in text.";
return 0;
}
#include <iostream>
#include <cstring>
using namespace std;
2
int main() {
char cuvant[10];
char palindrom[10];
cin >> cuvant;
int lungime = strlen(cuvant);
palindrom[lungime] = cuvant[lungime];
for(int i = 0; i < lungime; i++) {
palindrom[lungime - 1 - i] = cuvant[i];
}
cout << palindrom;
return 0;
}
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char sufix[10] = "aur";
char propozitie[100] = "Am un dinozaur portocaliu care este centaur";
int lungime_sufix = strlen(sufix);
char *cuvant = strtok(propozitie, " ");
while(cuvant) {
int lungime_cuvant = strlen(cuvant);
int pozitie = lungime_cuvant - lungime_sufix;
if(pozitie > 0) {
char sufix_cuvant[10] = "";
strcpy(sufix_cuvant, cuvant + pozitie);
if(strcmp(sufix_cuvant, sufix) == 0)
cout << cuvant << "\n";
}
cuvant = strtok(NULL, " ");
}
return 0;
}
3
Prefixul unui cuvant | Siruri de caractere in C++
Acum vom presupune ca avem prefixul „sar” iar propozitia este „Nu imi plac sarmalele
si sardinele„, trebuie sa identificam cuvintele care il au drept prefix pe „sar” (adica acele
cuvinte care incep cu „sar”), mai precis: sarmalele si sardinele. Pentru a face acest
lucru vom folosii functia strncpy care copiaza primele n caractere ale unui cuvant.
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char prefix[10] = "sar";
char propozitie[100] = "Nu imi plac sarmalele si sardinele";
int lungime_prefix = strlen(prefix);
char *cuvant = strtok(propozitie, " ");
while(cuvant) {
char prefix_cuvant[10] = "";
strncpy(prefix_cuvant, cuvant, lungime_prefix);
if(strcmp(prefix_cuvant, prefix) == 0)
cout << cuvant << "\n";
cuvant = strtok(NULL, " ");
}
return 0;
}
Iar ultima dintre cele mai populare probleme este aceea in care trebuie sa numaram de
cate ori apare un cuvant intr-o propozitie. De exemplu daca avem propozitia: „Azi este
Soare si Mihai este milionar. Mihai se duce sa manance caracatita cu caramael” trebuie
sa numaram de cate ori apare „Mihai” in propozitie.
Pentru a rezolva aceasta problema, vom sparge propozitia in cuvinte si vom numara de
cate ori apare cuvantul cerut.
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char cauta_cuvant[10] = "Mihai";
char propozitie[100] = "Azi este Soare si Mihai este milionar. Mihai se duce sa manance
caracatita cu caramael";
int nr = 0;
4
char *cuvant = strtok(propozitie, " ");
while(cuvant) {
if(strcmp(cuvant, cauta_cuvant) == 0)
nr = nr + 1;
cuvant = strtok(NULL, " ");
}
cout << cauta_cuvant << " a aparut de " << nr << " ori.\n";
return 0;
}