RSS

Siruri de caractere

11 Oct

Siruri de caractere (string-uri)

Cu sirurile de caractere ne-am intalnit inca de la intructiunea COUT, cand afisam mesaje de genul “Suma este”, “Valoarea cautata nu exista in sir” etc. Acestea sun exemple de constante sir de caractere. Termenul englezesc pentru sir de caractere este STRING. Daca lucram cu string-uri trebuie sa declaram utilizarea bibliotecii (colectie de functii specializate – amanunte despre aceste functii gasiti si la http://www.cplusplus.com/reference/cstring/ ) :

#include <cstring>

Declarare

char sir[50]; int I,n; //am declarat un string de maxim 50 de caractere

Practic, s-a declarat un vector de caractere.

Citirea unui string

Exista mai multe medode pentru citirea unui string:

  • cin.get(sir, 50); //in variabile SIR se citesc maxim 50 de caractere
  • cin.getline(sir,50); //analog, cu deosebirea ca este “consumat”  si ENTER-ul, acesta nefacand parte din sir
  • cin>>sir; //se memoreaza cuvantul de pana la primul separator – spatiu sau alt semn

Analoge sunt si cazurile pentru citirea din fisier

  • fin.get(sir, 50);
  • fin.getline(sir,50);
  • fin>>sir;

Se poate realiza si o initializare in momentul declararii

  • char vocale [ ] =”aeiou”; //nu s-a stabilit marimea cuvantului
  • char sir[7]=”Ana are mere”; //se memoreaza primele 7 caractere
Evident, exista si cuvantul vid (fara nici un caracter): char vid [] =””; //ghilimele fara nimic intre ele.

Afisarea unui string

cout<<sir;

 Ce se memoreaza de fapt?

Deoarece nu se stie exact cate caractere s-au introdus, imediat dupa ce stringul este memorat in variabila, dupa ultima pozitie este memorat caracter special (netiparibil) ‘/n’.El marcheaza sfarsitul oricarui sir de caractere.
char vocale [ ] ="aeiou";
Caracterele memorate in vocale sunt ‘a’, ‘e’, ‘i’,’o’, ‘u’ si ‘/n’.
Amintim ca sirul nostru de caractere sete un vector si incepe (asa cum cere standardul C) in pozitia 0. Practic vocale[0]=’a’, vocale[1]=’e’,vocale[2]=’i’,vocale[3]=’o’,vocale[4]=’u’ si vocale[5]=’/n’.

Parcurgerea string-ului

Pentru ca numarul de caractere nu este stabilit la citire, putem folosi o functie specifica pentru a determina lungimea string-ului, functia STRLEN (string length). Deoarece primul caracter din cele N se gaseste in pozitia 0, deducem ca ultimul se va gasi in pozitia N-1.
N=strlen(sir); for( I=0;i<N;i++) cout<<sir[I]<<endl; //prelucram sirul, caracter cu caracter

Probleme propuse

Fie o propozitie memorata intr-un sir de caractere SIR
  • cate cifre, litere mici, litere mari si semne speciale sunt in propozitie
  • de cate ori apare caracterul ‘ ‘ (spatiu).
  • Sa se afiseze sirul, dupa ce toate literele mici au fost transformate in litere mari (simularea functiei STRUPR – string upper)
  • Sa se afiseze sirul, dupa ce toate literele mari au fost transformate in litere mici (simularea functiei STRLWR – string lower)
  • Sa se afiseze sirul, dupa ce a fost oglindit (simularea functiei STRREV – string reverse)
 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: