000 model rezolvari subiecte bac siruri intensiv
DESCRIPTION
..TRANSCRIPT
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.
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
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;
}
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;
}