000 model rezolvari subiecte bac siruri intensiv

4
Prof: Isabela Coman Siruri de caractere Din variantele de bac intensiv si neintensiv- Subiectul II Varianta 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; } 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 ascii a celor 2 caractere. Vezi tabelul ascii : http://www.asciitable.com/ 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.

Upload: iuliastar

Post on 28-Dec-2015

34 views

Category:

Documents


2 download

DESCRIPTION

..

TRANSCRIPT

Page 1: 000 MODEL Rezolvari Subiecte Bac Siruri Intensiv

Prof: Isabela Coman

Siruri de caractere

Din variantele de bac intensiv si neintensiv- Subiectul II

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

}

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 ascii

a celor 2 caractere. Vezi tabelul ascii : http://www.asciitable.com/

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.

Page 2: 000 MODEL Rezolvari Subiecte Bac Siruri Intensiv

Prof: Isabela Coman

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

}

Varianta 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<<’*’;

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

R: ideale

Varianta 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

Page 3: 000 MODEL Rezolvari Subiecte Bac Siruri Intensiv

Prof: Isabela Coman

Varianta 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')

strcpy (s+i,s+i+1);

else i++;

}

cout<<s;

return 0;

}

Page 4: 000 MODEL Rezolvari Subiecte Bac Siruri Intensiv

Prof: Isabela Coman

Varianta 4)-4 intensiv

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;

}