Documente Academic
Documente Profesional
Documente Cultură
Siruri de caractere
#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]);
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.
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<<*;
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')
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;
}
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;
V 5) - 4 neintensiv
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;
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:
}
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,
#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>
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
V 9)-4 intensiv
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
V 10)-4 neintensiv
strcpy(s+i,s+i+2);
if (i>0) i=i-1;
}
else i=i+1;
V 11)-3 intensiv
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);
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
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;
}
cout<<" "<<s; | printf(" %s",s);
9 bdued
V 14)-3 neintensiv
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
9 bemeut
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
clasa a-XII-a A
clasaaa
testati in codeblocks:
#include <iostream>
#include<string.h>
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);
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>
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)
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
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
#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
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?
V 25)-4 intensiv*
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;