Din variantele de bac intensiv si neintensiv- Subiectul II · 1 Prof. Isabela Coman Siruri de...

19
1 Prof. Isabela Coman 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 citeşte de la tastatură un cuvânt format din cel mult 20 de caractere, doar litere mici ale alfabetului englez. Programul determină transformarea cuvântului citit prin înlocuirea fiecărei vocale a cuvântului, cu litera mare corespunzătoare, restul literelor nemodificându-se, ca în exemplu. Programul afişează pe ecran cuvântul obţinut, pe o singură linie. Se consideră vocale literele din mulţimea {a,e,i,o,u}. Exemplu: pentru cuvântul bacalaureat se va afişa 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]);

Transcript of Din variantele de bac intensiv si neintensiv- Subiectul II · 1 Prof. Isabela Coman Siruri de...

Page 1: Din variantele de bac intensiv si neintensiv- Subiectul II · 1 Prof. Isabela Coman Siruri de caractere Din variantele de bac intensiv si neintensiv- Subiectul II Primele 20 –strlen,

1

Prof. Isabela Coman

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 citeşte de la tastatură un cuvânt format din cel mult 20 de

caractere, doar litere mici ale alfabetului englez. Programul determină transformarea cuvântului citit prin înlocuirea fiecărei vocale a cuvântului, cu litera mare corespunzătoare, restul literelor nemodificându-se, ca în exemplu. Programul afişează pe ecran cuvântul obţinut, pe o singură linie. Se consideră vocale literele din mulţimea {a,e,i,o,u}.

Exemplu: pentru cuvântul bacalaureat se va afişa 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]);

Page 2: Din variantele de bac intensiv si neintensiv- Subiectul II · 1 Prof. Isabela Coman Siruri de caractere Din variantele de bac intensiv si neintensiv- Subiectul II Primele 20 –strlen,

2

Prof. Isabela Coman

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

Scrieţi un program C/C++ care citeşte de la tastatură un cuvânt format din cel mult 20 de caractere, doar litere ale alfabetului englez. Programul determină transformarea cuvântului citit prin înlocuirea fiecărei litere mici a cuvântului cu litera mare corespunzătoare, restul literelor nemodificându-se, ca în exemplu. Programul afişează pe ecran cuvântul obţinut. Exemplu: pentru cuvântul: bACAlaUrEaT se va afişa 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 secvenţa de instrucţiuni 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 executării

secvenţei s-a afişat succesiunea de caractere eied*eael* scrieţi care este şirul de caractere

memorat de variabila s. n=strlen(s);

for(i=0;i<n;i++)

if (s[i]==’e’) cout<<’*’;

Page 3: Din variantele de bac intensiv si neintensiv- Subiectul II · 1 Prof. Isabela Coman Siruri de caractere Din variantele de bac intensiv si neintensiv- Subiectul II Primele 20 –strlen,

3

Prof. Isabela Coman

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

R: ideale

V 3) – 4- neintensiv

În secvenţa de instrucţiuni 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 executării secvenţei s-a afişat succesiunea de caractere eeleeeneee scrieţi 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. Scrieţi instrucţiunile ce pot înlocui punctele de suspensie din secvenţa de

program alăturată astfel încât executarea ei să determine eliminarea tuturor literelor mici din şirul s

şi apoi afişarea şirului obţinut. 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')

Page 4: Din variantele de bac intensiv si neintensiv- Subiectul II · 1 Prof. Isabela Coman Siruri de caractere Din variantele de bac intensiv si neintensiv- Subiectul II Primele 20 –strlen,

4

Prof. Isabela Coman

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. Scrieţi instrucţiunile ce pot înlocui punctele de suspensie din secvenţa de rogram alăturată astfel încât executarea ei să determine înlocuirea tuturor literelor mici din şirul s cu litera W şi apoi afişarea şirului obţinut. 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;

}

Page 5: Din variantele de bac intensiv si neintensiv- Subiectul II · 1 Prof. Isabela Coman Siruri de caractere Din variantele de bac intensiv si neintensiv- Subiectul II Primele 20 –strlen,

5

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. Scrieţi instrucţiunile ce pot înlocui punctele de suspensie din secvenţa de

program alăturată astfel încât executarea ei să determine modificarea conţinutul şirului s prin

interschimbarea caracterelor aflate pe poziţii 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;

Page 6: Din variantele de bac intensiv si neintensiv- Subiectul II · 1 Prof. Isabela Coman Siruri de caractere Din variantele de bac intensiv si neintensiv- Subiectul II Primele 20 –strlen,

6

Prof. Isabela Coman

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ă câte un caracter, iar n şi i variabile întregi. Scrieţi instrucţiunile ce pot înlocui punctele de suspensie din secvenţa de program de mai jos astfel încât executarea ei să determine înlocuirea tuturor apariţiilor caracterului memorat de variabila c în şirul s cu caracterul memorat de variabila d şi apoi afişarea şirului obţinut.

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;

Page 7: Din variantele de bac intensiv si neintensiv- Subiectul II · 1 Prof. Isabela Coman Siruri de caractere Din variantele de bac intensiv si neintensiv- Subiectul II Primele 20 –strlen,

7

Prof. Isabela Coman

V 6)-5 intensiv

Se consideră un text cu maximum 255 de caractere în care cuvintele sunt separate prin unul sau

mai multe spaţii. Primul caracter din textul citit este o literă, iar cuvintele sunt formate numai din litere mici ale alfabetului englez. Scrieţi un program C/C++ care citeşte de la tastatură textul şi îl

transformă, înlocuind prima literă a fiecărui cuvânt cu litera mare corespunzătoare, restul caracterelor rămânând nemodificate. Textul astfel transformat va fi afişat pe ecran. Exemplu: dacă de la tastatură se introduce textul: mare frig rosu se va afişa 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;

Page 8: Din variantele de bac intensiv si neintensiv- Subiectul II · 1 Prof. Isabela Coman Siruri de caractere Din variantele de bac intensiv si neintensiv- Subiectul II Primele 20 –strlen,

8

Prof. Isabela Coman

}

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

spaţii. Textul conţine cel puţin o consoană. Scrieţi un program C/C++ care citeşte de la tastatură

textul şi apoi determină transformarea acestuia, eliminând numai ultima consoană care apare în text,

Page 9: Din variantele de bac intensiv si neintensiv- Subiectul II · 1 Prof. Isabela Coman Siruri de caractere Din variantele de bac intensiv si neintensiv- Subiectul II Primele 20 –strlen,

9

Prof. Isabela Coman

ca în exemplu. Programul va afişa pe ecran textul obţinut. Exemplu: dacă de la tastatură se introduce textul: mare frig saci pe ecran se va afişa: 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>

Page 10: Din variantele de bac intensiv si neintensiv- Subiectul II · 1 Prof. Isabela Coman Siruri de caractere Din variantele de bac intensiv si neintensiv- Subiectul II Primele 20 –strlen,

10

Prof. Isabela Coman

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

spaţii. Textul conţine cel puţin o consoană. Scrieţi un program C/C++ care citeşte de la tastatură

textul şi afişează pe ecran numai ultima consoană care apare în text. Exemplu: dacă de la tastatură se introduce textul mare frig saci pe ecran se va afişa: 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 afişează în urma executării secvenţei de program alăturate 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

Page 11: Din variantele de bac intensiv si neintensiv- Subiectul II · 1 Prof. Isabela Coman Siruri de caractere Din variantele de bac intensiv si neintensiv- Subiectul II Primele 20 –strlen,

11

Prof. Isabela Coman

V 9)-4 intensiv

Se consideră declararea de mai jos: char s[50], x[50];

Ce se afişează în urma executării secvenţei de program scrisă alăturat 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 afişează în urma executării secvenţei de program alăturate, 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 afişa în urma executării secvenţei de instrucţiuni alăturate 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ă declarările de mai jos: char s[]=”abbacdde”;

int i;

Ce şir reţine variabila s după executarea secvenţei de instrucţiuni alăturate? i=0;

while (i<strlen(s)-1)

if (s[i]==s[i+1]){

Page 12: Din variantele de bac intensiv si neintensiv- Subiectul II · 1 Prof. Isabela Coman Siruri de caractere Din variantele de bac intensiv si neintensiv- Subiectul II Primele 20 –strlen,

12

Prof. Isabela Coman

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 afişează pe ecran în urma executării secvenţei de program alăturate, î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

Scrieţi ce se afişează pe ecran în urma executării secvenţei de program alăturate, î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

Scrieţi ce se afişează pe ecran în urma executării secvenţei de program alăturate, î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);

Page 13: Din variantele de bac intensiv si neintensiv- Subiectul II · 1 Prof. Isabela Coman Siruri de caractere Din variantele de bac intensiv si neintensiv- Subiectul II Primele 20 –strlen,

13

Prof. Isabela Coman

11 AbcdEfghOId

V 13)-3 intensiv

Scrieţi ce se afişează pe ecran în urma executării secvenţei de program alăturate, î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

Scrieţi ce se afişează pe ecran în urma executării secvenţei de program alăturate, î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 afişează pe ecran în urma executării secvenţei de program alăturate, î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;

Page 14: Din variantele de bac intensiv si neintensiv- Subiectul II · 1 Prof. Isabela Coman Siruri de caractere Din variantele de bac intensiv si neintensiv- Subiectul II Primele 20 –strlen,

14

Prof. Isabela Coman

}

cout<<" "<<s; | printf(" %s",s);

9 bdued

V 14)-3 neintensiv

Ce se afişează pe ecran în urma executării secvenţei de program alăturate, î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 afişa pe ecran în urma executării secvenţei de program alăturate, î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 afişează pe ecran în urma executării secvenţei de program alăturate, î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);

Page 15: Din variantele de bac intensiv si neintensiv- Subiectul II · 1 Prof. Isabela Coman Siruri de caractere Din variantele de bac intensiv si neintensiv- Subiectul II Primele 20 –strlen,

15

Prof. Isabela Coman

9 bemeut

V 16)-4 intensiv

Ce va afişa secvenţa alăturată ş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 afişa secvenţa alăturată 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”);

Page 16: Din variantele de bac intensiv si neintensiv- Subiectul II · 1 Prof. Isabela Coman Siruri de caractere Din variantele de bac intensiv si neintensiv- Subiectul II Primele 20 –strlen,

16

Prof. Isabela Coman

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 afişa secvenţa alăturată 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 secvenţa alăturată, variabila a memorează un şir cu cel mult 100 decaractere, iar variabila i

este de tip întreg. Completaţi punctele de suspensie din secvenţă astfel încât aceasta să afişeze şirul de caractere *nf*rm*t*c*. (6p.) strcpy(a,”informatica”);

for(i=0;i<strlen(a);i++)

if(strchr(“aeiou”,a[i]) != 0)

Page 17: Din variantele de bac intensiv si neintensiv- Subiectul II · 1 Prof. Isabela Coman Siruri de caractere Din variantele de bac intensiv si neintensiv- Subiectul II Primele 20 –strlen,

17

Prof. Isabela Coman

cout<<”*”; | printf(...);

else

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

V 19)-4 intensiv

Ce va afişa secvenţa alăturată 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 secvenţa alăturată, variabila a memorează un

şir cu cel mult 100 de caractere, iar variabila i

este de tip întreg. Completaţi punctele de suspensie, astfel încât aceasta să afişeze 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 alcătuit 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 *. Scrieţi un

program C/C++ care citeşte de la tastatură textul şi afişează pe ecran, pe câte o linie, toate

secvenţele formate din câte două litere identice, ca în exemplu. Exemplu: dacă textul citit este: se afişează (copiii sunt la zoo) perechile alăturate. (10p.) ii

ii

oo

Page 18: Din variantele de bac intensiv si neintensiv- Subiectul II · 1 Prof. Isabela Coman Siruri de caractere Din variantele de bac intensiv si neintensiv- Subiectul II Primele 20 –strlen,

18

Prof. Isabela Coman

#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 următoarele expresii are valoarea 1 dacă şi numai dacă şirul de caractere s, de

lungime 10, este obţinut 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ă memorării unui număr neprecizat de şiruri de caractere reprezentând cuvintele dintr-un text? a. o listă înlănţuită în care fiecare nod memorează un cuvânt b. un tablou bidimensional de caractere c. un şir de caractere de lungime egală cu lungimea textului d. o structură cu atâtea câmpuri câte cuvinte există

V 25)-4 intensiv*

Page 19: Din variantele de bac intensiv si neintensiv- Subiectul II · 1 Prof. Isabela Coman Siruri de caractere Din variantele de bac intensiv si neintensiv- Subiectul II Primele 20 –strlen,

19

Prof. Isabela Coman

Scrieţi secvenţa de instrucţiuni C/C++ care permite afişarea 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 sfârşit este identic cu şirul citit de la sfârşit la început. Exemplu: şirul de caractere cojoc este palindrome

If (strcmp(s,strrev(s)) == 0)

Cout <<correct;

Else

Cout<<incorrect;