Exercitii rezolvate
1. Se citesc de la tastatura 2 siruri de caractere. Sa se afiseze care sir este mai mare din punct de vedere lexicografic.
#include<iostream.h>
#include<string.h>
void main()
{int i,n; char a[100],b[100];
cout<<"sir1=";cin>>a;
cout<<"sir2=";cin>>b;
n=strcmp(a,b);
if(n==0) cout<<"siruri egale";
else if(n<0) cout<<a<<">"<<b;
else cout<<b<<">"<<a;
}
2. Se citesc de la tastaura 2 siruri de caractere. Sa se verifice daca fara a face diferenta intre literele mari si mici cele 2 siruri reprezinta acelasi sir. De exemplu: a="Abc" si b="AbC" => cele 2 siruri coincid
#include<iostream.h>
#include<string.h>
void main()
{int i,n; char a[100],b[100];
cout<<"sir1=";cin>>a;
cout<<"sir2=";cin>>b;
strupr(a);
strupr(b);
if(strlen(a)==strlen(b)) {
i=0;
while(i<strlen(a)&&a[i]==b[i]) i++;
if (i==strlen(a)) cout<<"da";
else cout<<"nu";
}
else cout<<"nu";
}
3. Sa se afiseze literele comune din 2 siruri de caractere (de pe aceiasi pozitie) fara a se face distinctie intre literele mari si mici.
#include<iostream.h>
#include<string.h>
void main()
{int i,n; char a[100],b[100];
cout<<"sir1=";cin>>a;
cout<<"sir2=";cin>>b;
strupr(a);
strupr(b);
for(i=0;i<strlen(a);i++)
if(a[i]==b[i]) cout<<a[i];
}
4. Sa se interschime continutul a doua siruri de caractere.
#include<iostream.h>
#include<string.h>
void main()
{int i,n; char a[100],b[100],c[100];
cout<<"sir1=";cin.get(a,100);cin.get();
cout<<"sir2=";cin.get(b,100);
strcpy(c,a);
strcpy(a,b);
strcpy(b,c);
cout<<a<<" "<<b;
}
5. Sa se verifice daca un sir indeplineste proprietatea de palindrom. De exemplu: a="assa" - palindrom; b="assb" - nu e palindrom
#include<iostream.h>
#include<string.h>
void main()
{int j,i,n; char a[100],b[100],c[1];
cout<<"sir1=";cin.get(a,100);
n=strlen(a);
i=0;
j=n-1;
while(i<j && a[i]==a[j]) {i++;j--;}
if(i>=j)cout<<"da";
else cout<<"nu";
}
6. Se citeste un sir de caractere de la tastatura. Sa se scrie sirul transformand majusculele in litere mici.
#include<iostream.h>
#include<string.h>
void main()
{int j,i,n; char a[100],b[100],c[1];
cout<<"sir1=";cin.get(a,100);
strlwr(a);
cout<<a;}
7. Sa se determine frecventa de aparitie a unui caracter intr-un sir de caractere.
#include<iostream.h>
#include<string.h>
void main()
{int c=0,i,n; char a[100],ch;
cout<<"dati sirul "; cin.get(a,100);
cout<<"dati caracterul ";cin>>ch;
for(i=0;i<strlen(a);i++)
if(a[i]==ch) c++;
cout<<c;
}
8. Sa se genereze toate prefixele / sufixele unui cuvant. (vom afisa prefixele)
#include<iostream.h>
#include<string.h>
void main()
{int i,j,n; char a[100];
cout<<"dati sirul "; cin.get(a,100);
for(i=0;i<strlen(a);i++){
for(j=0;j<=i;j++)
cout<<a[j];
cout<<endl;
}
}
9. Se citeste un text caracter c. Sa se determine de cate ori se gaseste caracterul in text (nu se face distinctie intre literele mari si literele mici).
#include<iostream.h>
#include<string.h>
void main()
{int c=0,i,n; char a[100],ch[1];
cout<<"dati sirul "; cin.get(a,100);
cout<<"dati caracterul ";cin>>ch;
strupr(ch);strupr(a);
for(i=0;i<strlen(a);i++)
if(a[i]==ch[0]) c++;
cout<<c;
}
10. Se citesc n siruri de caractere. Sa se afiseze sirurile in ordine lexicografica (crescator).
#include<string.h>
#include<iostream.h>
#include<stdio.h>
char a[100][30]; /*vector cu maxim 100 componente de tip sir de caractere*/
int n;
void citire()
{int i;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
{
cout<<"a["<<i<<"]=";gets(a[i]);
}
}
void afisare()
{for (int i=1;i<=n;i++)
puts(a[i]);
cout<<endl;
}
void sortare()
{int i,j,y;char x[30];
for(i=1;i<=n-1;i++)
for (j=i+1;j<=n;j++)
{y=strcmp(a[i],a[j]);
strcpy(x,"");
if(y>0){
strcpy(x,a[i]);
strcpy(a[i],a[j]);
strcpy(a[j],x);
}
}
}
void main()
{
citire();
afisare();
sortare();
afisare();
}
11. Se citesc de la tastatura maxim 30 de cuvinte. Sa se determine cuvintele de lungime maxima.
#include<string.h>
#include<iostream.h>
#include<stdio.h>
char a[30][30]; /*vector cu maxim 100 componente de tip sir de caractere*/
int n;
void citire()
{int i;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
{
cout<<"a["<<i<<"]=";gets(a[i]);
}
}
void afisare()
{for (int i=1;i<=n;i++)
puts(a[i]);
cout<<endl;
}
int lungime_maxima()
{
int max=strlen(a[1]);
for(int i=1;i<=n;i++)
if(strlen(a[i])>max) max=strlen(a[i]);
return max;
}
void sir_lungime_max()
{int max=lungime_maxima();
for (int i=1;i<=n;i++)
if(strlen(a[i])==max) puts(a[i]);
}
void main()
{
citire();
afisare();
sir_lungime_max();
}
12. Se citeste un cuvant. Sa se afiseze care sunt literele folosite in acest cuvant.
#include<string.h>
#include<iostream.h>
#include<stdio.h>
char a[30];
void main()
{char *este;
cout<<"dati sirul";gets(a);
strlwr(a);
for(char c='a';c<='z';c++)
{este=strchr(a,c);
if (este-a>=0) cout<<c;
}
}
13. Se citeste de la tastaura un text. Sa se afiseze textul in ordine inversa.
#include<string.h>
#include<iostream.h>
#include<stdio.h>
char a[250];
void main()
{
cout<<"dati sirul";cin.get(a,250);
for(int i=strlen(a)-1;i>=0;i--)
cout<<a[i];
}
14. Se citeşte un text într-o variabilă de tip string, in care cuvintele se despart prin spaţii. Se cere:
a) Să se afişeze cuvintele în ordine alfabetică;
b) Să se numere cuvintele cu minim 4 vocale distincte
#include <iostream.h>
#include <conio.h>
#include <string.h>
void main()
{
char text[100],*p, separator[]=" ", cuv[10][10], cuvant[10], aux[10] ; int nrv=0,voc, nr, k, i, j;
cout<<"Dati sirul:";cin.get(text,100);
strcpy(p,text) ;
p=strtok(p,separator) ;
while(p)
{
strcpy(cuv[++nr],p);
p=strtok(NULL,separator);
}
for(i=1;i<nr;i++)
for(j=i+1;j<=nr;j++)
if(strcmp(cuv[i],cuv[j])>0)
{
strcpy(aux,cuv[i]);
strcpy(cuv[i],cuv[j]);
strcpy(cuv[j],aux);
}
for(i=1;i<=nr;i++)
cout<<cuv[i];
for(i=1;i<=nr;i++)
{
voc=0;
strcpy(cuvant,cuv[i]);
k=strlen(cuvant) ;
for(j=0;j<k;j++)
{switch(cuvant[j])
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':{voc++; break;}
}}
if (voc>=4) nrv++ ;
}
cout<<nrv;
getch();
}
15. Se citeşte de la tastatură un cuvânt. Să se afişeze numărul iniţial de caractere ale cuvântului şi apoi să se şteargă toate vocalele din cuvânt.
#include <iostream.h>
#include <conio.h>
#include <string.h>
void main()
{char cuvant[100]; int k,l,j,i;
cin>>cuvant;
k=strlen(cuvant) ;
for(j=0;j<k;j++)
{switch(cuvant[j])
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':{for(l=j;l<k;l++) cuvant[l]=cuvant[l+1];k--; break;}
}}
cout<<cuvant;}
}