Sunteți pe pagina 1din 11

1.Se citeste un cuvant format din litere mici.

Sa se afiseze cuvintele care se obtin prin eliminarea


succesiva a primei si ultimei litere din cuvantul citit.
Ex: Daca de citeste cuvantul alina se vor afisa:
alina
lin
i#include<iostream.h>
#include<string.h>
int main()
{
char a[100];
cin>>a;
while(strlen(a)>0)
{ cout<<a;
cout<<endl;
strcpy(a,a+1);
strcpy(a+strlen(a)-1,a+strlen(a));
}
return 0;
}
2.Se citeste un sir de caractere format din cel mult 100 de caractere. Sa se numere si sa se stearga
vocalele din sir.
Ex: Pentru sirul abracadabra se afiseaza
5 si brcdbr
int main()
{
char a[101],v[]="aeiouAEIOU";
cin.get(a,100);
int i,k=0;
for(i=0;i<strlen(a);i++)
if (strchr(v,a[i])!=0)
{k++;
strcpy(a+i,a+i+1);
}
cout<<k<<" "<<a;
return 0;
}
3.Se citeste un cuvant format din litere mici. Sa se inlocuiasca fiecare vocala mica din cuvant cu vocala
mare corespunzatoare.
Ex: Cuvantul algoritm se va transforma in AlgOrItm.
oid main()
{ char v[]="aeiou";
char s[40];
int i;
cin>>s;
for(i=0;i<strlen(s);i++)
if(strchr(v,s[i])!=0) s[i]=s[i]+'A'-'a';
cout<<s;
4.Se citeste un cuvant s format din maxim 200 de litere mici. Sa se elimine toate perechile de cate 2
litere alaturate identice.
Ex: din annaaalina se obtine lina
{ char s[200];
int i=0;
cin>>s;
while(i<strlen(s)-1)
{ if(s[i]==s[i+1])
{ strcpy(s+i,s+i+2);
if(i>0) i=i-1;
}
else i++;
}
cout<<s;

5.Se citeste un cuvnt format doar din litere mici. Sa se permute circular spre stnga literele din el si sa
se afiseze cuvntul astfel obtinut.
Ex. Alina => linaA
int i;
cin>>s;
aux=s[0];
for(i=0;i<strlen(s)-1;i++) s[i]=s[i+1];
s[strlen(s)-1]=aux;
cout<<s;
system("PAUSE");
return 0;
6.Se citeste un text scris cu litere mici si spatii. Sa se nlocuiasca n fiecare cuvnt din text prima si
ultima litera cu literele mari corespunzatoare.
Ex. ana are mere => AnA ArE MerE
cin.get(s,60);
s[0]=s[0]-32;
for(i=1;i<strlen(s)-1;i++)
if(s[i]!=' ' && (s[i+1]==' ' || s[i-1]==' ')) s[i]=s[i]-32;
s[strlen(s)-1]=s[strlen(s)-1]-32;
cout<<s;
system("PAUSE");
return 0;
7.Se citeste un cuvnt format din numar par de litere. Sa se interschimbe litera de pe prima pozitie cu
cea de pe a doua, a treia cu a patra, etc.
Ex. cosmin => ocmsni
cin>>s;
for(i=0;i<strlen(s)-1;i=i+2)
{ aux=s[i];
s[i]=s[i+1];
s[i+1]=aux;
}
cout<<s;
system("PAUSE");
return 0;
8.e citeste un text scris cu litere mici si spatii. Sa se codifice textul prin nlocuirea fiecarei litere cu
urmatoarea din alfabet, litera z nlocuindu-se cu a .
Ex. ana are mere => bob bsf nfsf
int i;
cin.get(s,50);
for(i=0;i<strlen(s);i++)
if(s[i]!=' ') if(s[i]=='z') s[i]='a';
else s[i]=s[i]+1;
cout<<s;
system("PAUSE");
9.Se citeste un cuvant format din litere mici. Sa se afiseze cuvintele care se obtin prin eliminarea
succesiva a literei sau a celor 2 litere din mijlocul cuvantului citit.
Ex: Daca de citeste cuvantul cosmina se vor afisa:
cosina
cona
ca
cin>>s;
if(strlen(s)%2==1)
{ strcpy(s+strlen(s)/2, s+strlen(s)/2+1);
cout<<s<<endl;
}
while(strlen(s)!=0)
{ strcpy(s+strlen(s)/2-1, s+strlen(s)/2+1);
cout<<s<<endl;
}

10.Se citesc 2 cuvinte a si b. Sa se determine daca sunt anagrame.


char a[30],b[30];

cin>>a>>b;
if(strlen(a)!=strlen(b)) cout<<"nu";
else
{
int ok=1;
while(strcmp(a,b)!=0 && ok)
{
if(strchr(b,a[0])!=0)
{
strcpy(strchr(b,a[0]), strchr(b,a[0])+1);
strcpy(a,a+1);
}
else ok=0;
}
if(ok) cout<<"da";
else cout<<"nu";
}
11.Spunem ca doua cuvinte "rimeaza" daca sufixele incepand de la ultima vocala sunt identice. Sa se
scrie un program care citeste doua cuvinte a si b si determina daca ele "rimeaza".
Ex: Diana si Sana "rimeaza"
int i;
for(i=0;i<strlen(a);i++)
if(strchr(v,a[i]))
strcpy(s1,a+i);
for(i=0;i<strlen(b);i++)
if(strchr(v,b[i]))
strcpy(s2,b+i);
if(strcmp(s1,s2)==0)
cout<<"Rimeaza.";
else
cout<<"Nu rimeaza.";
return 0;
12.Se citesc 2 cuvinte a si b. Sa se determine daca unul dintre ele este sufix al celuilalt.
Ex. ana si diana raspuns da
ana si informatica raspuns nu
cin>>a>>b;
if(strlen(a)<strlen(b))p=strstr(b+strlen(b)-strlen(a),a);
else p=strstr(a+strlen(a)-strlen(b),b);
if(p)cout<<"da";
else cout<<"nu";
13.Se citeste un cuvant a cu cel mult 100 de litere. Sa se afiseze pe linii separate toate cuvintele care se
pot forma prin eliminarea unei singure litere din cuvantul citit.
Exemplu: daca se citeste cuvantul alin se vor afisa:
lin
ain
aln
ali
cin >> a;
for ( i = 0; i < strlen(a); i++ )
{
for ( j = 0; j < strlen(a);j++)
if ( i != j )
cout << a[j];
cout << endl;
}

14.Se citeste un cuvant format din cel mult 100 de litere mici. Sa se stearga consoanele din el.
char v[] = "aeiou";
cin >> a;
for (int i = 0 ; i < strlen(a); i++ )
{
if ( strchr ( v , a[i] ) == 0 )

strcpy ( a + i , a + i + 1 );
}
cout << a;

15.Se citeste un cuvant a cu cel mult 100 de litere. Sa se stearga toate perechile de cate 2 litere
alaturate identice. Daca prin stergere se obtin alte perechie de litere identice sa se stearga si acestea.
Exemplu: din cuvantul abbapxsiisxh se obtine ph (prin eliminari succesive:aapxssxh, pxxh si apoi ph )
int i;
cin >> a;
for ( i = 0 ; i < strlen(a) - 1; i++ )
{
if ( a[i] == a[i+1] )
{
strcpy ( a + i , a + i + 2 );
i--;
i--;
}
}
cout << a;
16.Se citesc 2 numere naturale a si b cu maxim 200 de cifre fiecare. Sa se afiseze care dintre ele are
numa cifrelor mai mare.
int Suma ( char a[201] )
{
int sum = 0;
int i;
for ( i = 0 ; i < strlen(a) ; i++ )
if ( a[i] >= '0' && a[i] <= '9' )
sum = sum + a[i] - 48;
else
return -1;
return sum;
}
int main()
{
char a[201], b[201];
cin >> a >> b;
if ( Suma(a) != -1 && Suma(b) != -1 )
if ( Suma(a) < Suma(b) )
cout << b;
else
cout << a;
else
cout << "nu ati introdus corect numerele";

17.Se citeste un cuvant s. Sa se afiseze toate sufixele lui s in ordinea crescatoare a lungimii.
Ex: s=alina , se vor afisa:
a
na
ina
lina
alina

char s[51];
int i;
cin>>s;
for(i=strlen(s)-1;i>=0;i--)
cout<<s+i<<endl;
18.Din fisierul sir.in se citeste un text. Afisati cate cuvinte incep si se termina cu vocala.
Ex: Ana are opt mere
se va afisa 2.
char s[201], v[]="aeiouAEIOU";
int k=0;
ifstream fin("sir.in");
while(fin>>s)
if(strchr(v,s[0]) && strchr(v,s[strlen(s)-1])) k++;
if(k) cout<<k;
else cout<<"nu exista
19.Se citeste un numar natural n si apoi n cuvinte. Numarati cate dintre ele sunt anagrame ale primului
cuvant citit.
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("date.in");
ofstream fout("date.out");
int anagrame(char x[100], char y[100])
{
char a[100],b[100];
strcpy(a,x);//deoarece parametrii sunt transmisi prin referinta!!!
strcpy(b,y);
if(strlen(a)!=strlen(b)) return 0;
else while(strcmp(a,b)!=0)
{
if(strchr(b,a[0])==0) return 0;
else
{
strcpy(strchr(b,a[0]),strchr(b,a[0])+1);
strcpy(a,a+1);
}
}
return 1;
}
int main()
{
char s[100],a[100];
int n,i,k=0;
fin>>n;
fin>>s;
for(i=1;i<n;i++)
{
fin>>a;
if(anagrame(s,a)) k++;
}
fout<<k;
fin.close();
20.Se citesc doua cuvinte a si b avand cel mult 20 de litere fiecare. Determinati daca cuvantul b apare o
singura data in cuvantul a.
Exemple:
a="anamaria", b="ana" raspunsul este da
a="anamariana", b="ana" raspunsul este nu
a="amalia", b="ana" raspunsul este nu
chara[21],b[21],*x;
cin>>a>>b;
x=strstr(a,b);

if(x!=0 && strstr(x+strlen(b),b)==0) cout<<"da";


else cout<<"nu";
21.Se citesc 3 cuvinte s, a si b avand cel mult 20 de litere fiecare, iar a si b avand acelasi numar de
litere. Inlocuiti in cuvantul s toate aparitiile lui a cu b.
Exemplu:
s="abracadabra"
a="bra"
b="xyz"
va rezulta s="axyzcadaxyz"
har s[21], a[21], b[21], *x;
cin>>s>>a>>b;
while(x=strstr(s,a))
strncpy(x,b,strlen(b));
cout<<s;
22.a se scrie un program C/C++ care citeste de la tastatura un cuvnt format din cel mult 20 de
caractere, doar litere mici ale alfabetului englez. Programul determina transformarea cuvntului citit prin
nlocuirea fiecarei vocale a cuvntului, cu un sir format din doua caractere si anume vocala respectiva
urmata de litera mare corespunzatoare, restul literelor nemodificndu-se, ca n exemplu. Programul
afiseaza pe ecran cuvntul obtinut, pe o singura linie. Se considera vocale literele din multimea
{a,e,i,o,u}.
Exemplu: pentru cuvntul bacalaureat se va afisa pe ecran: baAcaAlaAuUreEaAt
cin>>s;
char v[]="aeiou";
for(int i=0;i<strlen(s);i++)
if(strchr(v,s[i])!=0) //e vocala mica
{ char *aux;
strcpy(aux,s+i);
strcpy(s+i+1,aux);
//dubleaza vocala mica
s[i+1]=s[i+1]-32;
//transforma dublura in mare
}
cout<<s;
23.Se citeste un cuvant c cu cel mult 20 de litere. Sa se elimine din cuvantul c toate aparitiile primei
litere.
Exemplu:
c="anamaria"
dupa prelucrare ramane "nmri"
cin>>c;
x=c[0];
for(int i=0;i<strlen(c);i++)
if(x==c[i])
{
strcpy(c+i,c+i+1);
i--;
}
cout<<c;

24.Se citeste un numar natural n si apoi n cuvinte formate din cel mult 20 de litere fiecare. Da se afiseze
cel mai lung cuvant care se poate forma cu doua cuvinte dintre cele citite.
Exemplu:
6
arici
iepure
cal
hipopotam
oaie

pastrav
Cel mai lung cuvant poate fi hipopotampastrav sau pastravhipopotam
har a[21],m1[21]="",m2[21]="";
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a;
if(strlen(a)>strlen(m1))
{
strcpy(m2,m1);
strcpy(m1,a);
}
else if(strlen(a)>strlen(m2)) strcpy(m2,a);
}
cout<<m1<<m2;
25.Se citesc 3 cuvinte s, a si b, s avand cel mult 50 de litere, iar a si b avand acelasi cel mult 10 litere
fiecare. Inlocuiti in cuvantul s toate aparitiile lui a cu b.
Exemplu:
s="abracadabra"
a="bra"
b="12345"
va rezulta s="a12345cada12345"cin>>s>>a>>b;
while(p=strstr(s,a))
{
strcpy(aux,b);
strcat(aux,p+strlen(a));
strcpy(p,aux);
}
cout<<s;
26.Se citeste de la tastatura un cuvant cu cel putin una si cel mult 20 de litere ale alfabetului englez.
Construiti si afisati pe ecran cuvantul obtinut prin interschimbarea primei consoane cu ultima vocala din
cuvantul citit. In cazul in care cuvantul este format numai din vocale sau numai din consoane, afisati pe
ecran mesajul IMPOSIBIL. Se considera vocale literele a, e, i, o, u, A, E, I, O, U.
Exemplu: dac se citeste cuvantul Marmorat se va obtine si afisa cuvantul aarmorMt
int i,j;
cin>>s;
i=0;
while(strchr(v,s[i])!=0 && i<strlen(s)) i++;
j=strlen(s)-1;
while(strchr(v,s[j])==0 && j>=0) j--;
if(i>=strlen(s) || j==-1) cout<<"imposibil";
else
{ char aux=s[i];
s[i]=s[j];
s[j]=aux;
cout<<s;
27.Se citeste de la tastatura un text cu cel mult 100 de caractere (doar litere ale alfabetului englez si
spatii). Construiti si apoi afisati pe ecran sirul de caractere obtinut din sirul initial prin inserarea dupa
fiecare vocala a caracterului *. Se considera vocale literele a, e, i, o, u, A, E, I, O, U.
Daca textul citit nu contine vocale text se va afisa nemodificat.
Exemplu: dac se citeste textul "Examenul de bacalaureat" se va obtine si afisa: "E*xa*me*nu*l de*
ba*ca*la*u*re*a*t"
char v[]="aeiouAEIOU", s[201], aux[201];
int i;
cin.get(s,100);

for(i=0;i<strlen(s);i++)
if(strchr(v,s[i]))
{ strcpy(aux,s+i);
strcpy(s+i+1,aux);
s[i+1]='*';
}
cout<<s;
28.Se citeste de la tastatura un text cu cel mult 100 de caractere (doar litere mici ale alfabetului englez si
spatii) si un cuvant cu cel mult 15 caractere, doar litere mici ale alfabetului englez.
Afisati pe ecran sirul obtinut prin inserarea in textul initial a caracterului ? dupa fiecare aparitie a
cuvantului citit. Daca in text nu apare cuvantul citit, se va afisa mesajul NU APARE.
Exemplu: daca se citeate de la tastatura textul
examenului examenul de bacalaureat si examenul de atestat
si cuvantul examenul se va afisa:
examenului examenul? de bacalaureat si examenul? de atestat
char s1[201], s2[16], *p, aux[201];cin>>s2;
p=s1;
while(strstr(p,s2))
{ char *q=strstr(p,s2);
if(((q-1)[0]==' ' || p==s1) && (q+strlen(s2))[0]==' ')
{ char aux[200];
strcpy(aux,s2);
strcat(aux,"?");
strcat(aux,q+strlen(s2));
strcpy(q,aux);
g=1;
}
p=q+strlen(s2);
}
if(g) cout<<s1;
else cout<<"nu exista";
29.ititi de la tastatura, separate prin Enter, doua siruri de caractere:
- un sir s de maximum 256 de caractere, care pot fi litere ale alfabetului englez si spatii
- un sir c de maximum 21 de caractere (litere ale alfabetului englez).
Inlocuiti in sirul s toate aparitiile sirului c cu un sir de exact aceeasi lungime efectiva cu c, format doar din
caractere *, ca in exemplu. Sirul s obinut in urma acestei prelucrari va fi afisat pe ecran. In cazul n care
c nu apare n s, programul va afisa mesajul NU APARE.
Exemplu: daca sirul S citit este Din departare se vede tare iar c este tare
atunci pe ecran se va afisa: Din depar**** se vede ****;
if(strstr(s,c)==0) cout<<"NU APARE";
else
{ while(strstr(s,c)!=0)
{ char *p=strstr(s,c);
for(int i=0;i<strlen(c);i++)
p[i]='*';
}
cout<<s;
30.n fisierul cuvinte.in se afla cate unul pe linie un sir de cuvinte.
Sa se scrie un program care citeste cuvintele din fisier si le afiseaz in fisierul cuvinte.out in ordine
alfabetica.
Exemplu:
cuvinte.in
ionut
ana
dana
anca
bomboane
cuvinte.out
ana
anca
bomboane

dana
ionut
while(fin>>x)
{
n++;
strcpy(s[n],x);
}
for(int i=1;i<n;i++)
for(int j=i+1;j<=n;j++)
if(strcmp(s[i],s[j])>0)
{
char aux[100];
strcpy(aux,s[i]);
strcpy(s[i],s[j]);
strcpy(s[j],aux);
}
for(int i=1;i<=n;i++)
fout<<s[i]<<endl;
31.Din fisierul text doc.txt se citeste un text care contine informatii despre mai multe persoane, sub o
forma nestructurata. Informatiile sunt dispuse pe linii de maxim 200 de caracte si pot contine CNP-uri
valide. Stiind ca CNP-ul valid al unei persoane este un sir de 13 cifre consecutive, sa se scrie n fisierul
text cnp.txt, pe linii distincte, toate CNP-urile extrase din text. Daca nu exista nici un CNP corect, se va
scrie n fisier valoarea 0.
Exemplu:
doc.txt
Popesu Grigore, 14 ani,
1991212122334; Gigel Banu 1031102453435,
Bujorului 7; Dana Marin: 2690405358687,
fara viza, 2450609987654 - Jane Doe
cnp.txt
1991212122334
1031102453435
2690405358687
2450609987654 while(fin.getline(s,201))
{ for(int i=0;i<strlen(s);i++)
if(s[i]>='0' && s[i]<='9')
{
l++;
if(l==13)
{
char aux[15];
strncpy(aux,s+i-12,13);
aux[13]=0;
fout<<aux<<endl;
gasit=1;
l=0;
}} else l=0;
}
if(!gasit) fout<<0;
32.Se citesc doua cuvinte a si b formate din cel mult 20 de litere fiecare. Afisati toate sufixele cuvantului
a care au proprietatea ca sunt prefixe ale cuvantului b. Daca nu exista astfel de sufixe afisati mesajul "nu
exista".
Exemplu: pentru cuvintele a="rebele" si b="elegant" sufixele cerute sunt "ele" si "e" (nu neaparat in
aceasta ordine).
nt gasit=0;
cin>>a>>b;
for(int i=0;i<strlen(a);i++)
if(strstr(b,a+i)==b)
{
cout<<a+i<<" ";

gasit=1;
}
if(!gasit) cout<<"nu exista";
33.Se citeste un numar natural n si apoi n cuvinte formate din cel mult 20 de litere fiecare. Calculati si
afisati cate dintre cele n-1 cuvinte citite incepand cu cel de al doilea au proprietatea ca primul cuvant citit
le este sufix.
Exemplu: daca n=6, iar cuvintele citite sunt ion, revelion, ionel, bulion, milion, pionul => 3 (3 cuvinte din
ultimele 5 se termina cu sufixul ion). har a[21], b[21];
int n,k=0;
cin>>n;
cin>>a;
for(int i=1;i<n;i++)
{
cin>>b;
if(strlen(b)>=strlen(a))
if(strcmp(a,b+strlen(b)-strlen(a))==0)
k++;
}
cout<<k;
34.in fisierul text date.in se citeste un text format din cuvinte separate prin spatii sau caractere de
forma .,;:-?!. Lungimea unei linii din fisier nu depaseste 255 caractere. Sa se scrie in fisierul text
date.out, pe linii diferite, cuvintele distincte din text care contin subsirul "ate", fara a face distinctie intre
litere mari si mici.
Exemplu:
date.in
Daca satelitii nu sunt activi, GPS-ul nu functioneaza...
- Ai vazut cate cuvinte marcate sunt?? Poate esti si tu atent! Cate sunt?
date.out
satelitii
cate
marcate
Poate
atent int gasit(int n, char s[100][256], char c[256])
{
for(int i=1;i<=n;i++)
if(strcmpi(s[i],c)==0) return 1;
return 0;
}
int litera(char c)
{
return c>='a' && c<='z' || c>='A' && c<='Z';
}
int main()
{
char s[100][256];//memoreaza cuvintele distincte
char a[266];//citeste o linie din fisier
int n=0;//nr de cuvinte distincte
while(fin.getline(a,256))//cat timp pot citi un rand
{
char *p;
while(p=strstr(a,"ate"))//p indica unde il gaseste pe ate
{
int j=p-a;//pozitia unde e ate
while(j>0 && litera(a[j-1])) j--;//merg spre stanga in cuvant
int k=p-a; //pozitia unde e ate
while(k<strlen(a) && litera(a[k+1])) k++;//merg spre dreapta in cuvant
char cuv[256]="";
strncat(cuv,a+j,k-j+1);//copiez cuvantul in cuv
if(!gasit(n,s,cuv))//daca nu exista in cuvintele memorate in s
strcpy(s[++n],cuv);//il daug

strcpy(a+j,a+k+1);//il sterg din linia citita


}
}
for(int i=1;i<=n;i++)
fout<<s[i]<<endl;
fin.close();
fout.close();
return 0;
35.Se citeste un cuvant format din cel mult 20 de litere. Sa se intershimbe prima jumatate a cuvantului
cu cea de a doua. Daca cuvantul este format din numar impar de litere, atunci litera din mijloc va
ramane
pe
loc.
Exemple: Cuvantul "cada" se transforma in "daca", iar "alina" in "naial".

int main()
{
char s[21],aux[11];
cin>>s;
int n=strlen(s);
strcpy(aux,s+(n+1)/2);
strncpy(s+(n+1)/2,s,n/2);
strncpy(s,aux,n/2);
cout<<s;
return 0;
}
SAU
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char s[21];
cin>>s;
int n=strlen(s);
for(int i=0;i<n/2;i++)
{
char aux=s[i];
s[i]=s[(n+1)/2+i];
s[(n+1)/2+i]=aux;
}
cout<<s;
return 0;
}

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