Sunteți pe pagina 1din 13

Transformarea literelor mari in litere

mici si invers

1. Folosind faptul ca diferenta dintre codul ASCII al


literelor mari si codul ASCII este de 32.
Ex: A=65;
a=97
cin.get(s,256);
for(i=0;i<strlen(s);i++)
if(s[i]>=A&&s[i]<=Z)
s[i]=s[i]+32;
cout<<s;
return0;
2.Utilizand functiile
toupper(caracter) => se gasesc in fisierul heaer ctype.h
tolower(caracter)
Ex: for(i=0;i<strlen(s);i++)
if(s[i]>=a&&s[i]<=z)
s[i]=toupper(s[i]);
strupr=>transforma literele mici din sirul dat ca parametru
in litere mari;
strlwr=>transforma literele mar din sirul dat ca parametru in
litere mici;
Ex: cin.get(sir,256);
strupr(sir);
cout<<sir;
Inversarea unui sir de carctere
1.Parcurgerea sirului dat in ordine inversa , construirea
glinditului acestuia si compararea celor doua siruri.
2.Folosirea functiei strrev(sir);
Sirul obtinut in urma aplicarii functiei este memorat tot in
parametrul sir deci valoarea initiala a sirului se pierde.
Ex:cin.get(s,256);
strcpy(s1,s);
strrev(s1);
if(strcmp(s,s1)==0)
cout<<palindrom;
else
cout<<nu e palindrom:;
Cautarea unui carcter intr-un sir
1.Clasic cu cautare secventiala.
2.Folosind functiile:
strchr(sir,carcter);
Functia va returna un pointer catre prima aparitie a
caracterului in sir.
Daca caracterul nu apare in sir atunci functia va returna
caracterul nul.
strrchr(sir,carcter)
Functia va returna un pointer catre ultima aparitie a
carcaterului in sir.
Aplicatie:

1.Fiind dat un sir de carctere de maxim 25 de carctere si un


carcter c sa se determine numarul de aparitii al carcterului c
in sir.
#include <iostream>
#include <string.h>
using namespace std;
int main()
{chars[26],c,*p;
int i,nr=0;
cin.get(s,26);
cin>>c;
p=strchr(s,c);
while(p!=NULL) {nr++; p=strchr(p+1,c);} cout<<nr++; return 0;}
Cautarea unui subsir intr-un sir

Se realizeaza cu ajutorul functiei strstr(sir,subsir).


Functia returneaza un pointer catre prima aparitie a
subsirului in sir.
Aplicatii
1.Se citeste de la tastatura un cuvant cu 25 carcatere ,
litere mari si litere mici ale alfabetului englez. Sa se
inlocuiasca vocalele din sir cu carcterul *.
#include <iostream>
#include <string.h>
using namespace std;
int main()
{char s[26],voc[]=aeiouAEIOU;
int i;
cin.get(s,26);
for(i=0;i<strlen(s);i++)
if(strchr(voc,s[i]!=NULL)
s[i]=*;
cout<<s;
return0;
2.Scrieti un program care citeste de la tastatura un sire de
carctere cu maxim 30 de carctere si construieste toate
prefixele ascestui cuvant.
#include <iostream>
#include <string.h>
using namespace std;
int main()
{char s[31];
int i,j;
cin.get(s,31);
for(i=0;i<strlen(s);i++)
{for(j=0;j<=i;j++)
cout<<s[j];
cout<<endl;
return 0;
Extragerea unui cuvant intr-un text
Se utilizeaza functia strtok(text,sir_delimitatori), unde
sir_delimitatori contine delimitatori ce despart entitatile
din text.
Functia va returna un pointer catre adresa entitatii
extrase.
Pentru a putea continua extragera de cuvinte din text
functia se apeleaza sub forma
strtok[NULL,sir_delimitatori).
Aplicatii
1. Se citeste de la tastatura un text cu o lungime de maxim
300 caractere in care cuvintele pot fi separate prin virgula,
spatii sau punct.Sa se afiseje cuvintele din text unele sub
altele si sa se determine numarul acestora.
......................................
{char t[301],s[]= , .*p;
int nr=0;
cin.get(t,301);
p=strtok(t,s);
while(p) {
cout<<p<<endl;
nr++;
p=strtok(NULL,s);}
cout<<nr;
retun0;
2.Secventa urmatoare memoreaza un sir de carctere, in
urma executarii ei s-a afisat p*r*o*b*a***e* stabiliti care
este sirul de carctere memorat initial in variabila s.
for(i=0;i<strlen(s);i++)
cout<<s[i]<<*;
Sirul de cartere memorat initial este proba*e
3. Care va fi irul de caractere afiat dup executarea
secvenei alturate , n care variabila s memoreaz un ir cu
cel mult 5 caractere?
char s[]=raton;
s[1]=s[3];
cout<<s
Se va afisa : roton
4. Care va fi irul de caractere afiat pe ecran dup
executarea secvenei alturate, n care variabila s
memoreaz un ir cu cel mult 4 caractere, iar variabila t un
caracter?
char s[]=arac;
t=s[1];
s[1]=s[3];
s[3]=t;
cout<<s;
Se va afisa :acar
5. 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?
a. strcmp(s,s+5)==0
b. s==strstr(s,s+5)
c. s==s+5
d.strcmp(s,strcat(s+5)==0
=> b. s==strstr(s,s+5)
Functii utile in prelucrarea sirurior de
carctere
Functia strspn(s1,s2)=> furnizeaza ca rezultat numarul de
caractere consecutive din sirul s1 (incepand cu primul
caracter) care se gaseste printre caracerele sirului s2.

Functia strcspn(s1,s2)=>furnizeaza ca rezultat numarul de


carctere consecutive din sirul s1 (incepand cu primul
carcater ), care nu se gasesc printre caracterele din sirul
s2.

Functia strpbrk(s1,s2)=>furnizeaza ca rezultat un pointer


catre primul carcter din sirul s1 care se gaseste si in sirul
s2, daca nici un carcter din sirul s1 nu se gaseste printre
caracterele sirului s2 , functia furnizeaza ca rezultat adresa
nula.
Conversia unui sir de carctere intr-un
numar

Functia atoi()=>tip rezultat int=>S.A. atoi(sir)=>converteste


sirul de carcatere sir intr-o valoare numerica intrega.

Functia atol()=>tip rezultat long=>S.A.


atol(sir)=>converteste sirul de carctere sir intr-o valoare
numerica intreaga de tip long.

Functia atof()=>tip rezultat double =>S.A.


atof(sir)=>converteste sirul de caractere sir intr-o valoare
numerica reala in virgula mobila dubla precizie

Functia _atold()=>tip rezultat long double=>S.A.


_atold(sir)=>converteste sirul de cactere sir intr-o valoare
numaerica rela in virgula mobila dubla precizie , de tip long.

Functia strtol()=>tip rezultat long=>S.A.


strtol(sir,&p,b)=>converteste sirul de carcatere sir intr-o
valoare numerica intreaga de tip long .Functiei i se
furnizeaza baza de numeratie prin parametrul b.Functia
furnizeaza pozitia primului carcter care nu poate fi
convertit prin parametrul p.

Functia strtoul()=>tip rezultat unsigned long=>S.A.


strtol(sir,&p,b)=>converteste sirul de carcatere sir intr-o
valoare numerica intreaga fara semn de tip long.Functiei i se
furnizeaza baza de numeratie prin parametrul b.Functia
furnizeaza pozitia primului caracter care nu poate fi
convertit prin parametrul p.

Functia strtod ()=>tip rezultat double=>S.A.


strtod(sir,&p)=>converteste sirul de carctere sir intr-o
valoare numerica reala in virgula mobila dubla
precizie.Functia furnizeaza pozitia primului carcter care nu
poate fi convertit prin parametrul p.
Conversia unui numar in sir de
caractere
Functia itoa()=>tip numar int=?S.A.
itoa(n,sir,b)=?converteste in sirul de caractere sir o valoare
numerica intreaga n , exprimata in baza de numeratie b.

Functia ltoa()=>tip numar long=>S.A.


ltoa(n,sir,b)=>converteste in sirul de carcatre sir o valoare
numerica intreaga de tip long n exprimata in baza de
numeratie b.

Functia ultoa()=>tip numar unsigned long=>S.A.


ultoa(n,sir,b)=>converteste in sirul de carctere sir o valoare
numerica intreaga fara semn , de tip long n , exprimata in
baza de numeratie b.

Functia ecvt()=>tip numar double=>S.A.


ecvt(n,m,&p,&s)=>converteste intr-un sir de caractere o
valoare numerica reala in virgula mobila dubla precizie
n.Parametrul l precizeaza numarul de carctere ale sirului ;
daca numarul are mai puteine cifre decat m , se va completa
la dreapta cu carcterul cifra 0, pana se obtin cele m
carctere.Functia furnizeaza prin numele ei adresa sirului de
carctere prin parametrul p-pozitia punctului zecimal si prin
parametru s semnul.

Functia fcvt()=>tip numar double=>S.A.


fcvt(n,m,&p,&s)=>converteste intr-un sir de carctere o
valoare numerica reala in virgula mobila dubla precizie n, la
fel ca functia ecvt()-cu deosebirea ca parametrul m
precizeaza numarul de carctere ale partii zecilmale din
sir;daca nr are mai putine cifre in partea fractionara decat
m se fa completa la dreapta cu carcterul cifra 0-pana se
obtin cele m carctere pentru partea fractionara.