Sunteți pe pagina 1din 9

2.3.

Tipul ir de caractere

2.3.1. Teste gril ( Pascal | C / C++ )

1. Care dintre urmtoarele secvene reprezint o declarare de variabil


aparinnd unui tip de date structurat?
a. x:real; b. x:integer; a. float x; b. int x;
c. x:char; d. x:string; c. char x; d. char x[3];

2. Care dintre urmtoarele secvene reprezint declararea corect i eficient a


unei variabile x ce reine simultan iniialele unui elev care este identificat cu
ajutorul unui ir format din cel mult 50 de caractere, ir ce include un nume
de familie i cel mult dou prenume.
a. x:string; a. string x;
b. x:string[50]; b. char x[51];
c. x:string[3]; c. char x[4];
d. x:char; d. char x;

3. Cum trebuie declarat variabila x astfel nct ea s poat reine simultan


primele zece litere mari ale alfabetului englez?
a. Var x : string[10]; a. char x[11];
b. Var x : char; b. char x;
c. Var x : char[10]; c. char x[A..J];
d. Var x : array[1..10] of word; d. float x[10];

4. Pentru a iniializa variabila n cu lungimea efectiv a irului de caractere


memorat de variabila w scriem instruciunea:
a. n:=strlen(w) a. n=length(w);
b. length(w):=n b. strlen(w)=n;
c. n=ord(w[0]) c. n=(int)w[0];
d. n:=length(w) d. n=strlen(w);

5. tiind c variabila s va fi folosit pentru a memora simultan numele celor 10


profesori ai unei clase i c fiecare dintre aceste nume are cel mult 20 de
litere, care este varianta corect de declarare a lui s?
a. var s:array[1..10] of string[10]; a. char s[20][11];
b. var s:string[10]; b. char *s[10][21];
c. var s:array[1..10] of string[20]; c. char s[10][21];
d. var s:string[10][20]; d. STRING s[10];

105
6. Pentru a compara lungimile efective a dou iruri de caractere se utilizeaz
subprogramul predefinit:

a. copy b. delete a. strcmp b. strtok


c. length d. insert c. strlen d. strcat

7. Care din urmtoarele subprograme predefinite realizeaz concatenarea a


dou iruri de caractere?
a. concat b. pos a. strcat b. strcmp
c. strcat d. paste c. concat d. paste

8. Pentru a cauta un ir de caractere n alt ir de caractere se utilizeaz


subprogramul predefinit:
a. insert b. copy a. strcat b. strchr
c. pos d. in c. strstr d. strcmp

9. Dou iruri de caractere s i t au lungimile egale dac i numai dac:


a. length(s)=length(t) a. strlen(s)==strlen(t)
b. ^s=^t b. s==t
c. s[1]=t[1] c. s[0]==t[0]
d. s=t d. strcmp(s,t)==0

10. Dac s este o variabil de tip ir de caractere (declarat astfel: var


s:string[100];/ char s[100];), atunci care dintre urmtoarele
expresii reprezint ultimul caracter memorat n ir?
a. s[length(s)-1] a. s[strlen(s)]
b. s[length(s)] b. s[strlen(s)-1]
c. s[0] c. s[100]
d. s[length[s]] d. s[strlen[s]]

11. n secvena de instruciuni urmtoare, variabila s memoreaz un ir de


caractere, iar variabila i este de tip integer/int. tiind c n urma
executrii secvenei s-a afiat succesiunea de caractere p*r*o*b*a***e*
stabilii care este irul de caractere memorat de variabila s.
for i:=1 to length(s) do for(i=0;i<strlen(s);i++)
write(s[i],*) printf("%c*",s[i]);
/ cout<<s[i]<<'*';

a. proba*e c. probae
b. *p*r*o*b*a***e d. p*r*o*b*a*e*

12. Variabila s a fost declarat astfel:


s:string[20]; char s[20];

106
Ce se afieaz dup executarea secvenei de mai jos?
s:=bacalaureat; strcpy(s,bacalaureat);
cout<<s[strlen(s)-4];
write(s[length(s)-3]); / printf(%c,s[strlen(s)-4]);

a. r b. e c. 17 d. 8

13. Variabila s a fost declarat astfel:


s:string[10]; char s[10];
iar variabila s reine irul de caractere bac2007. Ce valoare are expresia
length(s) strlen(s)
a. 8 b. 10 c. 9 d. 7

14. Ce se va afia dup executarea secvenei de program de mai jos?


var b : string[20];
begin
Variant b:='informatica'; delete(b,pos('r',b),pos('a',b));
a write(b)
Pascal end.
Variant char a[20]="informatica", b[20]="";
a C/C++ strncat(b,a,strlen(strchr(a,'t')));
cout<<b; / printf(%s,b);

a. tica b. form c. rmatica d. info

15. Care dintre urmtoarele expresii este adevrat/negativ?


a. length(casa)<pos(casa,acasa) a. strlen(casa)
b. pos(a,casa)=pos(a,acasa) b. strcmp(casa,acasa)
c. casa>acasa c. strcmp(acasa,casa)
d. casa = CASA d. strlen(casa)-
strlen(CASA)

16. Variabilele a i b sunt declarate astfel:

a,b:string[20]; char a[20],b[20];

Ce se afieaz n urma executrii secvenei de mai jos?


a:=bac20; b:=07; strcpy(a,bac20); strcpy(b,07);
write(concat(a,*),b); cout<<strcat(a,*)<<b; |printf(%s
%s,strcat(a,*),b);

a. bac20*07 b. bac2007 c. bac20bac2007 d. bac140

107
17. Pentru declararea unei variabile care memoreaz 20 de cuvinte avnd
maximum 10 caractere fiecare, vom utiliza sintaxa:
a. var c[10,20]:string; a. char c[10][20];
b. var c:array[1..10] of string; b. char c[10][ ];
c. var c[20,10]:string; c. char c[20,10];
d. var c:array[1..20] of string[10]; d. char c[20][11];

18. Se consider un ir de caractere s de lungime maxim 20 , ce conine cel


puin un caracter c.Care dintre urmtoarele secvene afieaz poziia
primei apariii a lui c n irul de caractere s?
a. write(pos(c,s)); a. cout<<strchr(s,c)-s;
/ printf(%d, strchr(s,c)-s);
b. write(pos(s,c)); b. cout<<strrchr(s,c);
/ printf(%d, strrchr(s,c));
c. write(pos(s,c)-1); c. cout<<strchr(s,c)-s-1;
/ printf(%d, strchr(s,c)-s-1);
d. write(substr(s,c)); d. cout<<strchr(s,c);
/ printf(%s, strchr(s,c));

19. Ce se va afia dup executarea urmtoarei secvene de instruciuni:

const s:string[30]= char s[30]=


examen de bacalaureat; examen de bacalaureat;
begin s[1]=X;
s[2]:=X; write(s); cout<<s; | printf(%s,s);
end.
a. examen de bacalaureat c. eXamen de bacalaureat
b. Examen de Bacalaureat d. Xxamen de bacalaureat

20. Se consider secvena alturat.Ce se va afia dac irul a este


aabbddeff iar irul b este aabbdeef?
if (a>b) then write (a) if (strcmp(a,b)>0)
else printf(%s ,a);/cout<<a;
if (a=b) then else
write(egalitate if (strcmp(a,b)==0)
) printf(egalitate);
else write(b) / cout<<egalitate;
else
printf(%s ,b);/cout<<b;
a. aabbdeeff b. aabbddeff
c. nici una dintre variantele propuse d. egalitate

21. Ce se va afia n urma executrii secvenei alturate, dac x este o variabil


de tip string, iar i are tipul integer ?

108
x := 'bacalaureat'; char x[] = "bacalaureat";
for i:= 1 to 4 do for (int i = 1; i <= 4; i++)
delete(x, 1, 1); strcpy(x, x + 1);
write(x); printf("%s", x); | cout << x;

a. alaureat b. aureat c. laureat d. blaureat

22. Care dintre urmtoarele iruri de caractere poate fi memorat n variabila x


astfel nct expresia:
length(x)>pos('s',x) strlen(x)>strchr(x,'s')-x+1
s aib valoarea false/0?
a. dedus b. pastos c. sedus d. sarm

23. Algoritmul urmtor testeaz dac irul de caractere s este palindrom (citit
att de la stnga la dreapta, ct i de la dreapta la stnga, se obine acelai
ir de caractere). Care este expresia care poate nlocui punctele de
suspensie astfel nct algoritmul s fie corect ?

i:=1; j:=length(s); i=0; j=strlen(s)-1;


while(i<j) and (s[i]=s[j]) do while(i<j && s[i]==s[j])
begin i:=i+1;j:=j-1 end; {i=i+1; j=j-1;}
if ....... then if(.......)
write(palindrom) printf(palindrom);
else / cout<<palindrom;
write(nu este palindrom); else
printf(nu este palindrom);
/ cout<<nu e palindrom;
a. i=j b. i>=j c. i<j d. i<>j

2.3.2. Probleme ( Pascal | C/C++ )

1. Scriei un program care citete de la tastatur un ir de caractere format din cel


mult 20 de litere mici din alfabetul englez i care afieaz mesajul "DA" dac
irul este format dintr-un numr egal de consoane i vocale, respectiv mesajul
"NU" n caz contrar.

2. Scriei un program care citete de la tastatur dou iruri de caractere, fiecare


ir fiind format din cel mult 100 de litere mici din alfabetul englez, i care
afieaz mesajul "DA" dac toate literele din primul ir se gsesc n cel de-al
doilea ir, nu neaprat n aceiai ordine i de acelai numr de ori, sau mesajul
"NU" n caz contrar. De exemplu, dac primul ir este "baraca", iar cel de-al
doilea ir este "abracadabra", programul trebuie s afieze mesajul "DA"
deoarece literele primului ir apar n cel de-al doilea ir.

109
3. S se realizeze un program Pascal/C/C++ care citete de la tastatur un numr
natural n cu cel mult nou cifre nedivizibil cu 10 i care afieaz pe ecran
numrul obinut din n prin schimbarea primei cifre a numrului cu ultima cifr a
sa, precum i valoarea radicalului de ordinul 2 din numrul obinut, cu cel mult
dou zecimale. Cele dou numere se vor afia pe o linie, separate printr-un
spaiu. Exemplu: pentru n=6094 se vor afia: 4096 64.

4. Scriei un program care citete de la tastatur dou numere naturale a i b


(0a,b200000000) i n cazul n care exist cel puin o aceeai cifr n
ambele numere, afieaz mesajul DA, iar n caz contrar afieaz mesajul NU.
De exemplu, pentru a=83 i b=119 se va afia pe ecran mesajul NU, iar pentru
a=5003 i b=720 se va afia DA.

5. Scriei programul Pascal/C/C++ care citete de la tastatur un text t format din


cel mult 80 de caractere, litere i spaii, i apoi elimin spaiile multiple din textul
t. Dac ntre dou cuvinte exist dou sau mai multe caractere spaiu, trebuie
eliminate unele dintre ele astfel nct s rmn exact unul. Se tie c la
nceputul i la sfritul irului nu sunt spaii. Textul obinut dup eliminare se va
afia pe ecran.
De exemplu, dac se citete textul: Maria a adus cana, atunci textul
afiat va fi: Maria a adus cana.

6. Se citesc de la tastatur dou iruri de caractere formate din cel mult 50 de


litere fiecare. S se afieze pe ecran irul format prin preluarea alternativ,
din fiecare ir, a cte unei litere (prima liter a primului ir, apoi prima liter a
celui de-al doilea, apoi a doua liter a primului ir, apoi a doua liter a celui
de-al doilea ir etc). Cnd se epuizeaz literele din unul dintre iruri, se vor
prelua toate literele rmase din cellalt ir.
Dac se citesc irurile ABC i MNPRTXB se va afia irul AMBNCPRTXB.

7. Pentru dou iruri de caractere cu maximum 250 de caractere fiecare (litere


mici ale alfabetului englez), cu caracterele n ordine alfabetic, introduse de
la tastatur, se cere s se afieze pe ecran un al treilea ir, format din toate
caracterele primelor dou, aezate n ordine alfabetic. Alegei un algoritm
de rezolvare, eficient din punct de vedere al timpului de executare. De
exemplu pentru sir1=ampstz i sir2=bfgostx se va afia
abfgmopssttxz.
a) Descriei strategia de rezolvare i justificai eficiena algoritmului ales,
folosind limbajul natural (5-6 rnduri).
b) Scriei programul Pascal/C/C++ corespunztor metodei descrise.

110
8. Scriei programul Pascal/C/C++ care citete de la tastatur un ir de cel
mult 100 de caractere, format doar din literele mici ale alfabetului englez i
caractere spaiu. Programul afieaz pe ecran irul codificat astfel:
dup fiecare vocal se adaug consoana imediat urmtoare (dup a
se insereaz b, dup i se insereaz j .a.m.d.),
la sfritul irului se adaug grupul de litere stop.
Exemplu: dac irul iniial este azi este proba de informatica ,
dup codificare se afieaz: abzij efstef propbab def
ijnfoprmabtijcabstop

9. Se citete de la tastatur un text format din cuvinte separate ntre ele prin
cte un spaiu. Fiecare cuvnt are cel mult 40 de caractere, doar litere mici
ale alfabetului englez. Textul are cel mult 200 de caractere. Scriei programul
Pascal/C/C++ care afieaz pe ecran, pe linii separate, doar cuvintele din
textul citit care conin cel mult trei vocale. Se consider vocale: a, e, i, o, u.
Exemplu. Dac textul este:
pentru examenul de bacalaureat se folosesc tablouri
se afieaz pe ecran:
pentru
de
se
folosesc

10. Scriei programul Pascal/C/C++ care citete de la tastatur un cuvnt de


cel mult 15 litere mici ale alfabetului englez i care afieaz pe ecran, pe linii
distincte, cuvintele obinute prin tergerea succesiv a vocalelor din cuvntul
citit, de la stnga la dreapta, ca n exemplu de mai jos:
Exemplu: Dac se citete cuvntul examen se afieaz:
xamen
xmen
xmn

111
11. Scriei programul Pascal/C/C++ care citete de la tastatur un cuvnt de cel
mult 15 litere mici ale alfabetului englez i care scrie pe ecran, pe linii
distincte, cuvintele obinute prin tergerea succesiv a vocalelor n ordinea
alfabetic a lor (a, e, i, o, u). La fiecare pas se vor terge toate
apariiile din cuvnt ale unei vocale (ca n exemplu).
Exemplu: Dac se citete cuvntul bacalaureat se afieaz:
bcluret (s-au ters toate cele patru apariii ale vocalei a)
bclurt (s-a ters unica apariie a vocalei e)
bclrt (s-a ters unica apariie a vocalei u)

12. Scriei programul PASCAL/C/C++ care citete de la tastatur un cuvnt cuv1


avnd cel mult 10 caractere, construiete cuvntul cuv2 format astfel: prima
liter a cuvntului cuv1 scris o singur dat, a doua liter a cuvntului cuv1
repetat de dou ori, a treia liter a cuvntului cuv1 repetat de trei ori, etc i
afieaz pe ecran cuvntul cuv2.
Exemplu: pentru cuv1=mama se va afia cuv2 :maammmaaaa

13. S se scrie programul PASCAL/C/C++ care citete de la tastatur un cuvnt de


maximum 20 de litere i minimum o liter i terge litera din mijloc n cazul n
care cuvntul are un numr impar de litere, respectiv cele dou litere din mijlocul
cuvntului dac acesta are un numr par de litere. Programul va afia cuvntul
rezultat n urma tergerii sau mesajul CUVANT VID dac dup tergere acesta
rmne far nici o liter.
Exemplu : dac se citete cuvntul carte, se va afia cate.

14. Se citesc de la tastatur n propoziii (0<n<101), avnd fiecare maximum 255


de caractere. tiind c oricare dou cuvinte consecutive dintr-o propoziie sunt
desprite printr-un singur spaiu i c fiecare propoziie se termin cu Enter,
s se afieze pe ecran propoziia care are cele mai multe cuvinte. Dac dou
sau mai multe propoziii au acelai numr de cuvinte se va afia prima dintre
ele, n ordinea citirii.
a) Explicai n limbaj natural metoda de rezolvare utilizat.
b) Scriei programul Pascal corespunztor.
De exemplu, pentru n = 3 i urmtorele propoziii:
Azi sunt inca elev.
Maine am examen de bac.
Ura, voi fi student!
Se va afia
Maine am examen de bac.

112
15. Scriei un program care citete de la tastatur dou cuvinte u i v formate din
cel mult 100 de litere mari ale alfabetului englez. Programul va verifica dac u i
v au acelai numr de caractere i, n caz afirmativ, va determina un ir de
lungime minim format din cuvinte, astfel nct primul cuvnt din acest ir s
coincid cu u, ultimul cu v i orice dou cuvinte succesive s difere prin exact o
liter. Fiecare cuvnt din acest ir va fi scris pe cte o linie, n fiierul text
TRANS.TXT. n cazul n care u i v nu au acelai numr de litere, se va afia pe
ecran mesajul EROARE.
De exemplu, dac u=MARE i v=TORT, atunci fiierul TRANS.TXT poate s
conin:
MARE
MART
TART
TORT

113

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