Sunteți pe pagina 1din 10

Laborator programarea calculatoarelor (2013)

Limbajul C++
Adrian Runceanu
1

Laborator nr. 7
Siruri de caractere
(tipul de date char)



Probleme rezolvate:

1. Sa se scrie o functie care sa returneze lungimea unui sir de caractere,
transmis ca parametru.
2. Scrieti un program care citeste un sir de caractere si transforma sirul in sir
cu litere mici.
3. Sa se afiseze unul sub altul, toate prefixele proprii ale unui cuvant citit de la
tastatura (prefixele unui cuvant sunt compuse din minim un caracter si maxim
toate caracterele, citite de la stanga la dreapta).
4. Sa se verifice daca doua cuvinte citite de la tastatura rimeaza (spunem ca
doua cuvinte rimeaza daca ultimele doua caractere sunt identice).
5. Se citeste un sir de caractere de la tastatura. Sa se scrie un program C++
care sa afiseze numarul de vocale si de consoane din sirul dat.
6. Sa se scrie un program care determina de cate ori apare un anumit
caracter intr-un sir de caractere.
7. Sa se scrie un program care sterge toate aparitiile unui subsir din cadrul
unui sir.
8. Se citesc n cuvinte. Se cere sa se ordoneze alfabetic.

Solutii:

Problema 1:





#include<iostream.h>

int main(void)
{
char s[30];
int l,i=0;
cout<<"Dati sirul de caractere ";
cin.getline(s,300);
while(s[i]!=0) i++;
cout<<"Numarul de caractere ale sirului este "<<i;
}

Execuia programului pe o serie de date de test:
Sa se scrie un program care calculeze si sa afiseze lungimea unui sir de
caractere, citit de la tastatura.

Laborator programarea calculatoarelor (2013)
Limbajul C++
Adrian Runceanu
2




Problema 2:




#include<iostream.h>

int main(void)
{
char s[100];
int l,i=0;
cout<<"Dati sirul de caractere: ";
cin.getline(s,100);
while(s[i]!=0)
{
if( (s[i]>=65) && (s[i]<=90) ) s[i]=s[i]+32;
i++;
}
cout<<"Sirul transformat in litere mici este: "<<s;
}

Execuia programului pe o serie de date de test:





Scrieti un program care citeste un sir de caractere si transforma sirul in sir cu
litere mici.


Laborator programarea calculatoarelor (2013)
Limbajul C++
Adrian Runceanu
3

Problema 3:





#include<iostream.h>

int main(void)
{
char s[30];
int l,i,j;
cout<<"Dati sirul de caractere ";
cin.getline(s,30);
cout<<"Prefixele sirului dat sunt : "<<endl;
i=0;
while(s[i]!=0)
{
for(j=0;j<=i;j++) cout<<s[j];
cout<<endl;
i++;
}
}

Execuia programului pe o serie de date de test:


Sa se afiseze unul sub altul, toate prefixele proprii ale unui cuvant citit de la
tastatura (prefixele unui cuvant sunt compuse din minim un caracter si maxim toate
caracterele, citite de la stanga la dreapta).


Laborator programarea calculatoarelor (2013)
Limbajul C++
Adrian Runceanu
4

Problema 4:





#include<iostream.h>

int main(void)
{
char s[30],t[30];
int l,i,j;
cout<<"Dati primul sir de caractere ";
cin>>s;
cout<<"Dati al doilea sir de caractere ";
cin>>t;
i=0;
while(s[i]!=0) i++;
j=0;
while(t[j]!=0) j++;
if( (s[i]==t[j]) && (s[i-1]==t[j-1]) )
cout<<s<<" rimeaza cu "<<t;
else cout<<s<<" NU rimeaza cu "<<t;
}

Execuia programului pe o serie de date de test:










Sa se verifice daca doua cuvinte citite de la tastatura rimeaza (spunem ca doua
cuvinte rimeaza daca ultimele doua caractere sunt identice).


Laborator programarea calculatoarelor (2013)
Limbajul C++
Adrian Runceanu
5

Problema 5:




#include<iostream.h>

int main(void)
{
char s[50];
int voc=0, cons=0,i;
cout<<"Dati sirul de caractere "; cin.getline(s,50);
i=0;
while(s[i]!=0)
{
switch (s[i]){
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
case 'A':
case 'E':
case 'I':
case 'O':
case 'U': {voc++;break;}
default : cons++;
}
i++;
}
cout<<"Numarul de vocale ale sirului este "<<voc<<endl;
cout<<"Numarul de consoane ale sirului este
"<<cons<<endl;
}

Execuia programului pe o serie de date de test:


Se citeste un sir de caractere de la tastatura. Sa se scrie un program C++ care
sa afiseze numarul de vocale si de consoane din sirul dat.


Laborator programarea calculatoarelor (2013)
Limbajul C++
Adrian Runceanu
6

Problema 6:





#include<iostream.h>
#include<string.h>
#include<stdio.h>

char s[256],c;
int i,j;

int main(void)
{
cout<<"Introduceti sirul = ";cin.getline(s,256);
cout<<"Introduceti caracterul cautat = ";c=getchar();
j=0;
if(c=='\n') c=' ';
for(i=1;i<=strlen(s);i++)
{
if(s[i-1]==c)
j++;
}
cout<<"Caracterul exista in sir de "<<j<<" d ori "<<endl;
}

Execuia programului pe o serie de date de test:









Sa se scrie un program care determina de cate ori apare un anumit caracter
intr-un sir de caractere.


Laborator programarea calculatoarelor (2013)
Limbajul C++
Adrian Runceanu
7


Problema 7:



Vom folosi cateva functii specifice sirurilor de caractere care sunt definite in
fisierul header <string.h>:
1. Functia strlen(s) returneaza lungimea sirului dat ca parametru
2. Functia strstr(s1, s2) returneaza pozitia unde apare subsirul s2
in sirul s1
3. Functia strcpy(s1, s2) copiaza sirul s2 in sirul s1

#include<iostream.h>
#include<string.h>
#include<stdio.h>
char sir[100],subsir[25],*p;
int lung_subsir;

int main(void)
{
clrscr();
cout<<"Introduceti sirul = ";cin>>sir;
cout<<"Introduceti subsirul = ";cin>>subsir;
lung_subsir=strlen(subsir);
p=strstr(sir,subsir);
while(p)
{
strcpy(p,p+lung_subsir);
p=strstr(p,subsir);
}
cout<<sir;
}

Execuia programului pe o serie de date de test:




Sa se scrie un program care sterge toate aparitiile unui subsir din cadrul unui sir.


Laborator programarea calculatoarelor (2013)
Limbajul C++
Adrian Runceanu
8

Problema 8:



Vom folosi cateva functii specifice sirurilor de caractere care sunt definite in
fisierul header <string.h>:
1. Functia strcmp(s1,s2) returneaza valoarea 0 daca sirul s1 este
egal cu sirul s2, valoarea 1 daca sirul s1 este mai mare decat sirul s2
sau -1 daca sirul s1 este mai mic decat sirul s2
2. Functia strcpy(s1, s2) copiaza sirul s2 in sirul s1

#include<iostream.h>
#include<string.h>

char cuvinte[10][25],temp[25];
int i,n,gasit=1;

int main(void)
{
cout<<"Introduceti numarul de cuvinte n = ";cin>>n;
for(i=0;i<n;i++)
{
cout<<"cuvant ";
cin>>cuvinte[i];
}

while(gasit==1)
{
gasit=0;
for(i=0;i<n-1;i++)
if(strcmp(cuvinte[i],cuvinte[i+1]) > 0)
{
strcpy(temp, cuvinte[i]);
strcpy(cuvinte[i],cuvinte[i+1]);
strcpy(cuvinte[i+1],temp);
gasit=1;
}
}
for(i=0;i<n;i++)
cout<<cuvinte[i]<<endl;
}






Se citesc n cuvinte. Se cere sa se ordoneze alfabetic.

Laborator programarea calculatoarelor (2013)
Limbajul C++
Adrian Runceanu
9
Execuia programului pe o serie de date de test:




























Laborator programarea calculatoarelor (2013)
Limbajul C++
Adrian Runceanu
10

Probleme propuse spre rezolvare


1. Se citeste un sir de caractere de la tastatura. Sa se scrie un program C++
care sa verifice daca sirul dat este palindrom sau nu. Numim palindrom un
cuvant care citit de la stanga la dreapta si de la dreapta la stanga obtinem
acelasi rezultat.

2. Se citesc doua texte de la tastatura. Sa se scrie un program C++ care sa
afiseze toate cuvintele comune din cele doua texte.

3. Se citesc doua cuvinte de la tastatura. Sa se scrie un program C++ care sa
verifice daca cele doua cuvinte se obtin unul din celalalt prin permutarea
cuvintelor.

4. Se citeste un text de la tastatura. Sa se scrie un program C++ care sa
afiseze frecventele de aparitii ale tututor caracterelor din textul dat.

5. Se citeste un text de la tastatura. Sa se scrie un program C++ care sa
determine grupurile de trei vocale din textul dat.

6. Sa se afiseze unul sub altul, toate sufixele proprii ale unui cuvant citit de la
tastatura (sufixele unui cuvant sunt compuse din minim un caracter si maxim
toate caracterele, citite de la dreapta la stanga).
Exemplu : Fie cuvantul limbaj, sufixele cuvantului dat sunt : j, aj, baj,
mbaj, imbaj, limbaj.

7. Sa se detecteze prima si ultima aparitie a unui caracter intr-un sir de
caractere.

8. Se da un cuvant, format din maxim 30 de litere mici. Sa se codifice acest
cuvant in limba pasareasca, adica dupa fiecare vocala sa se adauge grupul de
litere format din caracterul p urmat de vocala respectiva. Sa se afiseze
cuvantul obtinut dupa codificare.

Exemplu:
Fie cuvantul = informatica, dupa codificare obtinem
ipinfopormapatipicapa.

Se observa grupurile formate din caracterul p si vocala respectiva.

S-ar putea să vă placă și