Documente Academic
Documente Profesional
Documente Cultură
Limbajul C++
Adrian Runceanu
Probleme rezolvate:
Solutii:
Problema 1:
Sa se scrie o functie care sa returneze lungimea unui sir de caractere, transmis
ca parametru.
#include<iostream.h>
int lungime(char s[30])
{
int i;
i=0;
while(s[i]!=0) i++;
return i;
}
void main(void)
{
char s[30];
int l;
cout<<"Dati sirul de caractere ";cin>>s;
l=lungime(s);
cout<<"Numarul de caractere ale sirului este "<<l;
}
Problema 2:
#include<iostream.h>
void litere_mici(char s[30])
{
int i;
i=0;
while(s[i]!=0)
{
if( (s[i]>=65) && (s[i]<=90) ) s[i]=s[i]+32;
1
Laborator – programarea calculatoarelor
Limbajul C++
Adrian Runceanu
i++;
}
return;
}
void main(void)
{
char s[30];
int l;
cout<<"Dati sirul de caractere ";cin>>s;
litere_mici(s);
cout<<"Sirul transformat in litere mici este "<<s;
}
Problema 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).
#include<iostream.h>
void prefixe(char s[30])
{
int i,j;
i=0;
while(s[i]!=0)
{
for(j=0;j<=i;j++) cout<<s[j];
cout<<endl;
i++;
}
return;
}
void main(void)
{
char s[30];
int l;
cout<<"Dati sirul de caractere ";cin>>s;
cout<<"Prefixele sirului dat sunt : "<<endl;
prefixe(s);
}
Problema 4:
Sa se verifice daca doua cuvinte citite de la tastatura rimeaza (spunem ca doua
cuvinte rimeaza daca ultimele doua caractere sunt identice).
#include<iostream.h>
int rima(char s[30],char t[30])
{
int i,j;
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]) ) return 1;
else return 0;
}
2
Laborator – programarea calculatoarelor
Limbajul C++
Adrian Runceanu
void main(void)
{
char s[30],t[30];
int l;
cout<<"Dati primul sir de caractere ";cin>>s;
cout<<"Dati al doilea sir de caractere ";cin>>t;
if( rima(s,t)==1 ) cout<<s<<" rimeaza cu "<<t;
else cout<<s<<" NU rimeaza cu "<<t;
}
Problema 5:
#include<iostream.h>
void main(void)
{
char s[50];
int voc=0,cons=0,i;
cout<<"Dati sirul de caractere ";cin>>s;
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;
}
Problema 6:
#include<iostream.h>
#include<conio.h>
#include<string.h>
#include<stdio.h>
3
Laborator – programarea calculatoarelor
Limbajul C++
Adrian Runceanu
char s[256],c;
int i,j;
void main(void)
{
clrscr();
cout<<"Introduceti sirul = ";cin>>s;
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;
getch();
}
Problema 7:
Sa se scrie un program care sterge toate aparitiile unui subsir din cadrul unui sir.
Vom folosi cateva functii specifice sirurilor de caractere care sunt definite in fisierul
header <string.h>:
Ø Functia strlen(s) – returneaza lungimea sirului dat ca parametru
Ø Functia strstr(s1, s2) – returneaza pozitia unde apare subsirul s2 in sirul s1
Ø Functia strcpy(s1, s2) – copieaza sirul s2 in sirul s1
#include<iostream.h>
#include<conio.h>
#include<string.h>
#include<stdio.h>
char sir[100],subsir[25],*p;
int lung_subsir;
void 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;
getch();
}
4
Laborator – programarea calculatoarelor
Limbajul C++
Adrian Runceanu
Problema 8:
Vom folosi cateva functii specifice sirurilor de caractere care sunt definite in fisierul
header <string.h>:
Ø 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
Ø Functia strcpy(s1, s2) – copieaza sirul s2 in sirul s1
#include<iostream.h>
#include<conio.h>
#include<string.h>
char cuvinte[10][25],temp[25];
int i,n,gasit=1;
void main(void)
{
clrscr();
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;
getch();
}
5
Laborator – programarea calculatoarelor
Limbajul C++
Adrian Runceanu
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’.