You are on page 1of 19

1

Siruri de caractere
Din variantele de bac intensiv si neintensiv- Subiectul II
Primele 20 strlen, strcpy, strchr
V 2)-problema 5 intensiv
S se scrie un program C/C++ care citete de la tastatur un cuvnt format din cel mult 20 de
caractere, doar litere mici ale alfabetului englez. Programul determin transformarea cuvntului citit
prin nlocuirea fiecrei vocale a cuvntului, cu litera mare corespunztoare, restul literelor
nemodificndu-se, ca n exemplu. Programul afieaz pe ecran cuvntul obinut, pe o singur linie.
Se consider vocale literele din mulimea {a,e,i,o,u}.
Exemplu: pentru cuvntul bacalaureat se va afia pe ecran: bAcAlAUrEAt
#include<string.h>
#include<ctype.h>
#include<iostream>
using namespace std;
int main (){
char a[21]; //declar un sir cu cel mult 21 caractere(inclusiv cel nul)
char voc[] = {'a','e','i','o','u'}; //initializare sir de caractere
int i,j,x;
cin.get(a,20); //citim un sir de maxim 21 caractere
x = strlen(a); //calculam lungimea sirului citit
for (i=0;i<=x;i++) //luam pe rand toate cele x caractere ale sirului
for (j=0;j<=4;j++) //pt un caracter selectat, parcurgem vocalele
if (a[i] == voc[j]) //daca caracterul selectat este vocala
a[i] = a[i] - 'a' + 'A'; //transformam vocala in litera mare
//sau a[i]=toupper(a[i]);
cout<<a;
return 0;
}
SAU
#include<string.h>
#include<ctype.h>
#include<iostream>
using namespace std;
int main (){
char a[21];//declar un sir cu cel mult 21 caractere(inclusiv cel nul)
int i,j,x;
; //citim un sir de maxim 21 caractere
x = strlen(a); //calculam lungimea sirului citit
for (i=0;i<x;i++)//luam pe rand toate cele x caractere ale sirului
if (a[i] == 'a' || a[i] == 'e' || a[i] == 'i' || a[i] == 'o' || a[i] ==
'u') //daca caracterul selectat este vocala
a[i]=toupper(a[i]);

Prof. Isabela Coman

2
cout<<a;
return 0;
}
Obs: Tipul char este de fapt tot un tip numeric de date. Diferenta a doua
variabile de tip char( a doua caractere), determina distanta in tabelul asci a
celor 2 caractere.
Cum distanta intre a si c este aceeasi cu distantra intre A si C, putem
transforma o litera mica in litera mare astfel:
Calculam distanta dintre un caracter mic pana la caracterul 'a' mic.
De ex: 'e'-'a'=4
Daca adunam aceasta distanta la caracterul 'A' vom obtine 'E'.
Asa rezulta formula de transformare din algoritmul de mai sus.
Exista si o functie care face in mod automat aceasta transformare. Aceasta
este: toupper.
V 2) problema 5 neintensiv
Scriei un program C/C++ care citete de la tastatur un cuvnt format din cel mult 20 de caractere,
doar litere ale alfabetului englez. Programul determin transformarea cuvntului citit prin nlocuirea
fiecrei litere mici a cuvntului cu litera mare corespunztoare, restul literelor nemodificndu-se, ca
n exemplu. Programul afieaz pe ecran cuvntul obinut.
Exemplu: pentru cuvntul: bACAlaUrEaT se va afia pe ecran: BACALAUREAT
#include<string.h>
#include<ctype.h>
#include<iostream>
using namespace std;
int main (){
char a[21];//declar un sir cu cel mult 21 caractere(inclusiv cel nul)
int i,j,x;
cin.get(a,20); //citim un sir de maxim 21 caractere
x = strlen(a); //calculam lungimea sirului citit
for (i=0;i<=x;i++)//luam pe rand toate cele x caractere ale sirului
if ('a'<=a[i] && a[i]<='z') //daca caracterul selectat este litera mica
a[i] = a[i] - 'a' + 'A'; //transformam vocala in litera mare
//sau a[i]=toupper(a[i]);
cout<<a;
return 0;
}

V 3) 4 intensiv
n secvena de instruciuni de mai jos, variabila s memoreaz un ir de caractere format doar din
litere ale alfabetului englez, iar variabilele i i n sunt de tip int. tiind c n urma executrii
secvenei s-a afiat succesiunea de caractere eied*eael* scriei care este irul de caractere
memorat de variabila s.
n=strlen(s);
for(i=0;i<n;i++)
if (s[i]==e) cout<<*;

Prof. Isabela Coman

3
else cout<<'e'<<s[i];

R: ideale
V 3) 4- neintensiv
n secvena de instruciuni de mai jos, variabila s memoreaz un ir de caractere format doar din litere
ale alfabetului englez, iar variabilele i i n sunt de tip int. tiind c n urma executrii secvenei s-a afiat
succesiunea de caractere eeleeeneee scriei care este irul de caractere memorat de variabila s.
n=strlen(s);
for(i=0;i<n;i++)
cout<<s[i]<<'e';

R: elene
V 4)-4 intensiv
4. Fie s o variabil ce memoreaz un ir de caractere, format doar din litere ale alfabetului englez,
i i o variabil de tip int. Scriei instruciunile ce pot nlocui punctele de suspensie din secvena de
program alturat astfel nct executarea ei s determine eliminarea tuturor literelor mici din irul s
i apoi afiarea irului obinut.
i=0;
while (i<strlen(s))
...............
printf("%s",s); | cout<<s;
Rezolvare:
i=0;
while (i<strlen(s)){
if (s[i]>=a && s[i]<=z)
strcpy (s+i,s+i+1);
else i++;
}
cout<<s;

testati in codeblocks:
#include<string.h>
#include<ctype.h>
#include<iostream>
using namespace std;
int main (){
char s[21];
int i,j,x;
cin.get(s,20);
x = strlen(s);
i=0;
while (i<strlen(s)){
if (s[i]>='a' && s[i]<='z')

Prof. Isabela Coman

4
strcpy (s+i,s+i+1);
else i++;
}
cout<<s;
return 0;
}

V 4)-4 neintensiv
Fie s o variabil ce memoreaz un ir de caractere, format doar din litere ale alfabetului englez, i i
o variabil de tip int. Scriei instruciunile ce pot nlocui punctele de suspensie din secvena de
rogram alturat astfel nct executarea ei s determine nlocuirea tuturor literelor mici din irul s cu
litera W i apoi afiarea irului obinut.
i=0;
while (i<strlen(s))
{
...............
}
printf("%s",s);| cout<<s;
Rezolvare:
i=0;
while (i<strlen(s)){
if (s[i]>= 'a' && s[i]<= 'z')
s[i]='W';
i++;
}
cout<<s;

testati in codeblocks:
#include<string.h>
#include<ctype.h>
#include<iostream>
using namespace std;
int main (){
char s[21];
int i,j,x;
cin.get(s,20);
x = strlen(s);
i=0;
while (i<strlen(s)){
if (s[i]>='a' && s[i]<='z')
s[i]='W';
i++;
}
cout<<s;
return 0;
}

Prof. Isabela Coman

V 5)-4 intensiv
Fie s o variabil ce memoreaz un ir de caractere, c o variabil de tip char, iar i i j dou
variabile de tip int. Scriei instruciunile ce pot nlocui punctele de suspensie din secvena de
program alturat astfel nct executarea ei s determine modificarea coninutul irului s prin
interschimbarea caracterelor aflate pe poziii simetrice fa de mijlocul irului (primului caracter cu
ultimul, al doilea cu penultimul, etc).
i=0;
j=strlen(s)-1;
while (i<j)
{
.........
}
Rezolvare:
i=0;
j=strlen(s)-1;
while (i<j){
aux = s[i];
s[i] = s[j];
s[j] = aux;
i++;
j--;
}

testati in codeblocks:
#include<string.h>
#include<iostream>
using namespace std;
int main (){
char s[21],aux;
int i,j;
cin.get(s,20);
i=0;
j=strlen(s)-1;
while (i<j){
aux = s[i];
s[i] = s[j];
s[j] = aux;
i++;
j--;
}
cout<<s;
return 0;
}
Obs: Tot acest algoritm este facut in mod automat de functia strrev(s);

#include<string.h>
#include<iostream>
using namespace std;

Prof. Isabela Coman

6
int main (){
char s[21],aux;
int i,j;
cin.get(s,20);
strrev(s);
cout<<s;
return 0;
}

V 5) - 4 neintensiv
Fie s o variabil ce memoreaz un ir de caractere, c i d dou variabile ce memoreaz cte un
caracter, iar n i i variabile ntregi. Scriei instruciunile ce pot nlocui punctele de suspensie din
secvena de program de mai jos astfel nct executarea ei s determine nlocuirea tuturor
apariiilor caracterului memorat de variabila c n irul s cu caracterul memorat de variabila d i apoi
afiarea irului obinut.

n=strlen(s);
for(i=0;i<n;i++)
...............
printf("%s",s);| cout<<s;
Rezolvare:
n=strlen(s);
for(i=0;i<n;i++)
if(s[i]==c)
s[i]=d;
cout<<s;

testati in codeblocks:
#include<string.h>
#include<iostream>
using namespace std;
int main (){
char s[21],c,d;
int i,n;
cin.get(s,20);
cout<<"ce caracter vrei sa inlocuiesti:";
cin>>c;
cout<<"cu ce caracter inlocuiesti";
cin>>d;
n=strlen(s);
for(i=0;i<n;i++)
if(s[i]==c)
s[i]=d;
cout<<s;
return 0;

Prof. Isabela Coman

7
V 6)-5 intensiv
Se consider un text cu maximum 255 de caractere n care cuvintele sunt separate prin unul sau
mai multe spaii. Primul caracter din textul citit este o liter, iar cuvintele sunt formate numai din litere
mici ale alfabetului englez. Scriei un program C/C++ care citete de la tastatur textul i l
transform, nlocuind prima liter a fiecrui cuvnt cu litera mare corespunztoare, restul
caracterelor rmnnd nemodificate. Textul astfel transformat va fi afiat pe ecran.
Exemplu: dac de la tastatur se introduce textul: mare frig rosu se va afia pe ecran: Mare
Frig Rosu (dar daca as avea si alte caractere cum ar fi semen de
punctuatie?)

#include<ctype.h>
#include<iostream>
#include<string.h>
using namespace std;
int main (){
char a[226]; int i,x,stare;
cin.get(a,226);
x = strlen(a);
stare = 0;
for (i=0;i<=x;i++)
switch (stare){
case 0:
if (a[i] >= 'a' && a[i]<='z'){
a[i] = a[i] - 'a' + 'A';
stare = 1;
}
break;
case 1:
if (a[i] == ' ')
stare = 0;
break;
}
cout<<a;
return 0;
}
Rezolvare cu if-uri:
using namespace std;
int main(){
char a[255];
unsigned i,x,stare=1;
cin.get(a,255);
//parcurgem sirul pana la caracterul null ca sa numaram caracterele
x=0;
while(a[x]!='\0')
x++;
// sau x=strlen(a);
for(i=0;i<x;i++)
if (stare && a[i]!=' '){
a[i]=toupper(a[i]);
stare=0;

Prof. Isabela Coman

8
}
else
if (a[i]==' ')stare=1;
cout<<a;
return 0;
}}
Altfel:
#include<iostream>
#include<string.h>
using namespace std;
int main (){
char a[226]; int i,x;
cin.get(a,226);
x = strlen(a);
a[0] = a[0] - 'a' + 'A'; //sau a[0]=toupper(a[0]);
for (i=1;i<=x;i++){
while(a[i]==' ')
i++;
if(a[i-1]==' ')
a[i] = a[i] - 'a' + 'A'; //sau a[0i]=toupper(a[i]);
}
cout<<a;
return 0;
}
sau
#include<iostream>
#include<string.h>
using namespace std;
int main (){
char s[226]; int i,n;
cin.get(s,226);
n = strlen(s);
s[0] = s[0] - 32; //sau a[0]=toupper(a[0]);
for (i=1;i<n;i++){
if((s[i]>='a' && s[i]<='z')&& s[i-1]==' ')
s[i] = s[i] - 'a' + 'A'; //sau a[i]=toupper(a[i]);
}
cout<<s;
return 0;
}

V 6)-5 intensiv
Idem
V 7)-4 intensiv
Se consider un text cu maximum 255 de caractere, format din litere mici ale alfabetului englez i
spaii. Textul conine cel puin o consoan. Scriei un program C/C++ care citete de la tastatur
textul i apoi determin transformarea acestuia, eliminnd numai ultima consoan care apare n text,

Prof. Isabela Coman

9
ca n exemplu. Programul va afia pe ecran textul obinut. Exemplu: dac de la tastatur se
introduce textul: mare frig saci pe ecran se va afia: mare frig sai

#include<string.h>
#include<ctype.h>
#include<iostream>
using namespace std;
int main (){
char a[226]; int i,x,z,j,p;
char voc[] = {'a','e','i','o','u'};
cin.get(a,226);
x = strlen(a);
for (i=0;i<x;i++){
p = 0;
for (j=0;j<=4;j++)
if (a[i] == voc[j])
p = 1;
if (p == 0)
z = i;
}
strcpy(a+z,a+z+1);
cout<<a;
return 0
}
#include<string.h>
#include<iostream>
using namespace std;
int main (){
char a[226],*ch; int i,x,p;
char voc[] = {'a','e','i','o','u'};
cin.get(a,226);
x = strlen(a);
for (i=0;i<x;i++){
//strchr returneaza NULL (adresa nula) daca caracterul
ch=strchr(voc,a[i]);
if (ch == NULL)
p = i;
}
strcpy(a+p,a+p+1);
cout<<a;
return 0;
}

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

Prof. Isabela Coman

10
using namespace std;
int main (){
char a[226],*ch; int i,x,p;
cin.get(a,226);
x = strlen(a);
while(strchr("aeiou ",s[i])) //atentie ! in sir estesi spatiul
i--;
strcpy(s+i,s+i+1);
cout<<s;
return 0;
}
V 7)-5 neintensiv
Se consider un text cu maximum 255 de caractere, format din litere mici ale alfabetului englez i
spaii. Textul conine cel puin o consoan. Scriei un program C/C++ care citete de la tastatur
textul i afieaz pe ecran numai ultima consoan care apare n text. Exemplu: dac de la tastatur
se introduce textul mare frig saci pe ecran se va afia: c

#include<string.h>
#include<iostream>
using namespace std;
int main (){
char a[226],*ch; int i,x,p;
cin.get(a,226);
x = strlen(a);
while(strchr("aeiou ",s[i])) //atentie ! in sir este si spatiul
i--;
cout<<s[i];
return 0;
}

V 8)-3 intensiv
Ce se afieaz n urma executrii secvenei de program alturate dac variabila s memoreaz irul
de caractere abcdefgh? (6p.)
strcpy(s+2,s+4);
cout<<s<< <<strlen(s);
abefgh 6

V 8)-3 neintensiv
idem

Prof. Isabela Coman

11
V 9)-4 intensiv
Se consider declararea de mai jos:
char s[50], x[50];
Ce se afieaz n urma executrii secvenei de program scris alturat dac variabila s memoreaz
irul abcdefg? (6p.)

strcpy(x,s+4);
strcpy(s+4,123);
strcat(s,x);
cout<<s; | printf(%s,s);
abcd123efg

V 9)-4 neintensiv
Ce se afieaz n urma executrii secvenei de program alturate, dac variabila s memoreaz irul
de caractere abcdef iar variabila n este de tip ntreg?

n=strlen(s);
s[n-1]=s[0];
cout<<s; | printf(%s ,s);
abcdea

V 10)-4 intensiv
Ce se va afia n urma executrii secvenei de instruciuni alturate dac variabila s memoreaz
irul de caractere abbacdde, iar variabila i este de tip ntreg? (6p.)
i=0;
while (i<strlen(s)-1)
if (s[i]==s[i+1])
strcpy(s+i,s+i+1);
else
i=i+1;
cout<<s;
abacde

V 10)-4 neintensiv
Se consider declarrile de mai jos:
char s[]=abbacdde;
int i;
Ce ir reine variabila s dup executarea secvenei de instruciuni alturate?
i=0;
while (i<strlen(s)-1)
if (s[i]==s[i+1]){

Prof. Isabela Coman

12
strcpy(s+i,s+i+2);
if (i>0) i=i-1;
}
else i=i+1;
a. aace

b. ace

c. ce

d. acde

V 11)-3 intensiv
Ce se afieaz pe ecran n urma executrii secvenei de program alturate, n care variabila s
memoreaz un ir cu cel mult 12 caractere, iar i este de tip ntreg?

strcpy(s,abracadabra);
i=0;
cout<<strlen(s); | printf("%d",strlen(s));
while (i<strlen(s))
if (s[i]=='a')
strcpy(s+i,s+i+1);
else
i++;
cout<<" "<<s; | printf(" %s",s);
brcdbr

V 11)-3 neintensiv
idem
V 12)-4 intensiv
Scriei ce se afieaz pe ecran n urma executrii secvenei de program alturate, n care variabila s
memoreaz un ir de cel mult 12 caractere, iar variabila i este de tip ntreg. (6p.)
char s[13]="abcdefghoid";
cout<<strlen(s); | printf("%d",strlen(s));
for (int i=0;i<strlen(s);i++)
if (strchr("aeiou",s[i])!=NULL)
s[i]= s[i]-'a'+'A';
cout<<" "<<s; | printf(" %s",s);
11 AbcdEfghOId

V 12)-4 neintensiv
Scriei ce se afieaz pe ecran n urma executrii secvenei de program alturate, n care variabila s
memoreaz un ir cu cel mult 12 caractere, iar i este de tip ntreg.
char s[13]="abcdefghoid";
cout<<strlen(s); | printf("%d",strlen(s));
for (int i=0;i<strlen(s);i++)
if (s[i]=='a' || s[i]=='e' || s[i]=='i' || s[i]=='o' || s[i]=='u')
s[i]= s[i]-'a'+'A';
cout<<" "<<s; | printf(" %s",s);

Prof. Isabela Coman

13
11 AbcdEfghOId

V 13)-3 intensiv
Scriei ce se afieaz pe ecran n urma executrii secvenei de program alturate, n care variabila s
memoreaz un ir de cel mult 12 caractere, iar variabila I este de tip ntreg. (6p.)
char s[13]="abcdefghoid";
i=0;
cout<<strlen(s); | printf("%d",strlen(s));
while (i<strlen(s))
if (strchr("aeiou",s[i])!=NULL)
strcpy(s+i,s+i+1);
else i++;
cout<<" "<<s; | printf(" %s",s);
11 bcdfghd

V 13)-3 neintensiv
Scriei ce se afieaz pe ecran n urma executrii secvenei de program alturate, n care variabila s
memoreaz un ir de cel mult 12 caractere, iar variabila i este de tip ntreg.
char s[13]="abcdefghoid";
i=0;
cout<<strlen(s);
| printf("%d",strlen(s));
while (i<strlen(s))
if (s[i]=='a' || s[i]=='e' ||s[i]=='i' || s[i]=='o' || s[i]=='u')
strcpy(s+i,s+i+1);
else i++;
cout<<" "<<s; | printf(" %s",s);
11 bcdfghd

V 14)-4 intensiv
Ce se afieaz pe ecran n urma executrii secvenei de program alturate, n care variabila s
memoreaz un ir cu cel mult 10 caractere, iar variabilele i i j sunt de tip ntreg? (4p.)
char s[11]="abcduecda";
cout<<strlen(s); | printf("%d",strlen(s));
i=0; j=strlen(s)-1;
while (i<j)
if (s[i]==s[j]){
strcpy(s+j,s+j+1); //pun caracterul nul peste
strcpy(s+i,s+i+1); j=j-2;
}
else{
i=i+1;
j=j-1;

Prof. Isabela Coman

14
}
cout<<" "<<s; | printf(" %s",s);
9 bdued

V 14)-3 neintensiv
Ce se afieaz pe ecran n urma executrii secvenei de program alturate, n care variabila s
memoreaz un ir cu cel mult 10 caractere, iar variabilele i, j i k sunt de tip ntreg?
char s[11]="abcduecda";
cout<<strlen(s); | printf(%d, strlen(s));
i=0; j=strlen(s)-1;
k=0;
while (i<j){
if (s[i]==s[j])
k=k+1;
i=i+1;
j=j-1;
}
cout<<" "<<k; | printf(" %d",k);
2

V 15)-4 intensiv
3. Ce se va afia pe ecran n urma executrii secvenei de program alturate, n care variabila s
memoreaz un ir cu cel mult 10 caractere, iar variabila i este de tip ntreg? (4p.)
i=0; char s[11]="abaemeiut";
cout<<strlen(s); | printf("%d",strlen(s));
while (i<strlen(s))
if (strchr("aeiou",s[i])!=NULL)){
strcpy(s+i,s+i+1);
i=i+1;
}
else
i=i+2;
cout<<" "<<s; | printf(" %s",s);
9 bemeut
Ce se afieaz pe ecran n urma executrii secvenei de program alturate, n care variabila s
memoreaz un ir cu cel mult 10 caractere, iar variabila i este de tip ntreg?
i=0; char s[11]="abaemeiut";
cout<<strlen(s); | printf("%d",strlen(s));
while (i<strlen(s))
if (s[i]=='a' || s[i]=='e' || s[i]=='i' || s[i]=='o' || s[i]=='u){
strcpy(s+i,s+i+1); i=i+1; }
else
i=i+2;
cout<<" "<<s; | printf(" %s",s);

Prof. Isabela Coman

15
9 bemeut

V 16)-4 intensiv
Ce va afia secvena alturat tiind c variabila a memoreaz un ir cu cel mult 100 de caractere,
iar variabilele i i k sunt de tip ntreg? (6p.)
k=a-A;
strcpy(a,clasa a-XII-a A);
cout<<a<<endl; | printf(%s\n,a);
for(i=0;i<strlen(a);i++)
if(a[i]>=a&& a[i]<=z) a[i]=a[i]-k;
cout<<a; | printf(%s,a);
clasa a-XII-a A
CLASA A-XII-A A
strcpy(a,clasa a-XII-a A);
cout<<a<<endl; | printf(%s\n,a);
for(i=0;i<strlen(a);i++)
if(a[i]>=a&& a[i]<=z)
cout<<a[i]; | printf(%s,a[i]);
clasa a-XII-a A
clasaaa
testati in codeblocks:

#include <iostream>
#include<string.h>
using namespace std;
int main(){
char a[101];
int i;
strcpy(a,"clasa a-XII-a A");
cout<<a<<endl; // printf(%s\n,a);
for(i=0;i<strlen(a);i++)
if(a[i]>='a'&& a[i]<='z')
cout<<a[i]; // printf(%s,a[i]);
return 0;
}
V 17)-4 intensiv
Ce va afia secvena alturat de program, tiind c variabila a memoreaz un ir cu cel mult 100
de caractere, iar variabila i este de tip ntreg ? (6p.)
strcpy(a,bacalaureat);

Prof. Isabela Coman

16
cout<<strlen(a)<<endl; | printf(%d\n,strlen(a));
for(i=0;i<strlen(a);i++)
if(strchr(aeiou,a[i])!=0)
cout<<*; | printf(*);

11
******

V 17)-4 neintensiv
Ce va afia secvena alturat de program, tiind c variabila amemoreaz un ir cu cel mult 100
de caractere, iar variabila i este de tip ntreg?
strcpy(a,bacalaureat);
n=strlen(a);
cout<<n<<endl;| printf(%d\n,n);
cout<<a[0]<<*<<a[n-1];|
printf(%c*%c,a[0],a[n-1]);
11
b*t
testeaza in codeblocks

#include <iostream>
#include<string.h>
using namespace std;
int main(){
char a[101];
int n;
strcpy(a,"bacalaureat");
n=strlen(a);
cout<<n<<endl;// printf(%d\n,n);
cout<<a[0]<<'*'<<a[n-1];//printf(%c*%c,a[0],a[n-1]);
return 0;
}
V 18)-4 intensiv
In secvena alturat, variabila a memoreaz un ir cu cel mult 100 decaractere, iar variabila i
este de tip ntreg. Completai punctele de suspensie din secven astfel nct aceasta s afieze
irul de caractere *nf*rm*t*c*. (6p.)
strcpy(a,informatica);
for(i=0;i<strlen(a);i++)
if(strchr(aeiou,a[i]) != 0)

Prof. Isabela Coman

17
cout<<*; | printf(...);
else
cout<<s[i]; | printf(...);

V 19)-4 intensiv
Ce va afia secvena alturat de program, tiind c variabila x memoreaz un ir cu cel mult 100
de caractere, iar variabila i este de tip ntreg ? (6p.)
strcpy(x,bac2008);
cout<<x<<endl; | printf(%s\n,x);
for(i=0;i<strlen(x);i++)
if (strchr(0123456789,x[i])==0)
cout<<x[i]; | printf(%c,x[i]);

bac2008
bac

V 20)-4 intensiv
In secvena alturat, variabila a memoreaz un
ir cu cel mult 100 de caractere, iar variabila i
este de tip ntreg. Completai punctele de
suspensie, astfel nct aceasta s afieze doar
literele mici i literele mari din irul de caractere
memorat n variabila a. (6p.)
strcpy(a,Bac 2007 iulie);
for(i=0;i<strlen(a);i++)
if((a[i]>=a && a[i]<=z) || (a[i]>=A && a[i]<=Z))
cout<<a[i];

V 21)-4 intensiv
Se consider un text alctuit din cel mult 250 de caractere, n care cuvintele sunt formate doar
din litere mici ale alfabetului englez i sunt separate prin unul sau mai multe caractere *. Scriei un
program C/C++ care citete de la tastatur textul i afieaz pe ecran, pe cte o linie, toate
secvenele formate din cte dou litere identice, ca n exemplu.
Exemplu: dac textul citit este: se afieaz (copiii sunt la zoo) perechile alturate.
(10p.)
ii
ii
oo

Prof. Isabela Coman

18
#include<string.h>
#include<ctype.h>
#include<iostream>
using namespace std;
int main (){
char s[226]; int i;
//char voc[] = {'a','e','i','o','u'};
cin.get(s,251);
for (i=1;i<strlen(s);i++)
if (s[i] == s[i-1])
cout<<s[i]<<s[i]<<"\n";
//cout<<a;
return 0;
}
V 22)-4 intensiv
Ce valoare are expresia de mai jos dac variabila s memoreaz irul de caractere
alfabet?
strlen(strcpy(s,s+2)) = 5

Urmatoarele 20 strcat, strcmp

V 23)-4 intensiv*
Care din urmtoarele expresii are valoarea 1 dac i numai dac irul de caractere s, de
lungime 10, este obinut prin concatenarea a dou iruri identice? (6p.)
a. strcmp(s,s+5)==0 b. s==strstr(s,s+5)
c. s==s+5 d. strcmp(s,strcat(s,s+5))==0

V 24)-4 intensiv
Care este structura de date adecvat memorrii unui numr neprecizat de iruri de caractere
reprezentnd cuvintele dintr-un text?
a. o list nlnuit n care fiecare nod memoreaz un cuvnt
b. un tablou bidimensional de caractere
c. un ir de caractere de lungime egal cu lungimea textului
d. o structur cu attea cmpuri cte cuvinte exist

V 25)-4 intensiv*

Prof. Isabela Coman

19
Scriei secvena de instruciuni C/C++ care permite afiarea pe ecran a mesajului Corect dac un
ir de maximum 100 caractere, memorat de variabila s, este palindrom sau mesajul Incorect n
caz contrar. Un ir de caractere este palindrom dac citit de la nceput la sfrit este identic cu irul
citit de la sfrit la nceput.
Exemplu: irul de caractere cojoc este palindrome

If (strcmp(s,strrev(s)) == 0)
Cout <<correct;
Else
Cout<<incorrect;

Prof. Isabela Coman