Sunteți pe pagina 1din 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


5

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);

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

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