a IX-a A27 lecții INFORMATICĂ | 12 lecții T.I.C.
Informatică
Lectia 00001   |   Lectia 00   |   Lectia 01   |   Lectia 02   |   Lectia 03   |   Lectia 04   |   Lectia 05   |   Lectia 06   |   Lectia 07   |   Lectia 08   |   Lectia 09   |   Lectia 10   |   Lectia 101   |   Lectia 102   |   Lectia 103   |   Lectia 11   |   Lectia 11_2   |   Lectia 12   |   Lectia 12_2   |   Lectia 12_3   |   Lectia 12_4   |   Lectia 12_5   |   Lectia 13   |   Lectia 14   |   Lectia 17
Lectia 18   |   Lectia 19
T.I.C.

Lectia 01   |   Lectia 02   |   Lectia 03   |   Lectia 04
Lectia 05   |   Lectia 06   |   Lectia 07   |   Lectia 08   |   Lectia 09
Lectia 10   |   Lectia 11   |   Lectia 12
a IX-a B0 lecții INFORMATICĂ | 0 lecții T.I.C.
a IX-a C0 lecții INFORMATICĂ | 11 lecții T.I.C.
T.I.C.
Lectia 01   |   Lectia 02   |   Lectia 03   |   Lectia 04
Lectia 05   |   Lectia 06   |   Lectia 07   |   Lectia 08
Lectia 10   |   Lectia 12   |   Lectia 13
a IX-a D0 lecții INFORMATICĂ | 0 lecții T.I.C.
a IX-a E0 lecții INFORMATICĂ | 0 lecții T.I.C.
a X-a A5 lecții INFORMATICĂ | 10 lecții T.I.C.
Opțional
Fișa 01   |   Fișa 02   |   Fișa 03   |   Fișa 04   |   Fișa 05
T.I.C.

Lectia 07   |   Lectia 08   |   Lectia 09   |   Lectia 10   |   Lectia 11   |   Lectia 12   |   Lectia 13   |   Lectia 14
Lecția 14_1
Lectia 15
a X-a B0 lecții INFORMATICĂ | 0 lecții T.I.C.
a X-a C0 lecții INFORMATICĂ | 0 lecții T.I.C.
a X-a D0 lecții INFORMATICĂ | 0 lecții T.I.C.
a XI-a A16 lecții INFORMATICĂ | 0 lecții T.I.C.
Informatică
Lectia 07   |   Lectia 08   |   Lectia 09   |   Lectia 10   |   Lectia 11   |   Lectia 12   |   Lectia 13   |   Lectia 14
Lectia 16
Lectia 16 --- [ Teorie + 2 Probleme rezolvate ]

ȘIRURI DE CARACTERE

Limbajul C/C++ permite initializarea unui tablou de caractere printr-o constanta sir, care include automat caracterul  NULL

Caracterul NULL '\0' se adauga atutomat dupa ultimul caracter din sir.

'\n' - caracterul linie noua     deci cout<<endl;    echivalent cu  cout<<'\n';

 

Exemplu :

char vect[11]=”calculator”;

char vect[]=”calculator”; (compilatorul face calculul numarului de octeti necesari)

char vect[100]=”calculator”; (s-au rezervat mai multi octeti decat era necesar)

1               Sirurile de caractere sunt de fapt tablouri de caractere, care au ca ultim element un terminator de sir, caracterul NULL. Exemplu:

char tc[5] = {’a’, ’b’, ’c’, ’d’, ’e’};     // tablou de caractere

char sc[5] = {’a’, ’b’, ’c’, ’d’, ’\0’};    // sir de caractere cu elementele abcd Ultima initializare este echivalenta cu:

char sc[5] = ”abcd”;      //sau char sc[] = ”abcd”; char sc1[5] = ”abcd”;

char s[10];

cout<<sc<<endln;    //afiseaza abcd
cout<<tc<<endl;     //eroare: tabloul de caractere nu contine terminatorul de sir, deci nu poate fi afisat ca sir
cout<<s<<endl;         // eroare: tablou neinitializat 
cout<<sc1[0];        // afiseaza primul  caracter din  sirul sc1 
cout<<sc1[2];       / / afiseaza al treilea element din sirul  sc1
sc1[1]=’K’;             // elementului din sir de indice 1 i se atribuie valoarea K;

 

CITIREA / AFISAREA SIRURILOR DE CARACTERE

Sirurile de caractere pot fi initializate inca de la declarare sau citite pe parcursul programului.

a.          Citirea unui sir de caractere se poate face ca citirea oricarui tablou, intr-un for, caracter cu caracter

(desi nu este recomandata). In acest caz, terminatorul de sir nu este memorat automat, el trebuie pus explicit dupa ultimul caracter din sir.

 

Exemplu:

char c[20];

for(int i=0;i<=5;i++)

cin>>c[i];

cout<<c<<endl; //se va afisa sirul format din cele 6 caractere, urmat de caractere reziduale”,

//initializate implicit la compilare, din cauza ca n-a fost pus terminatorul de sir

c[6]='\0';

cout<<c<<endl; //a fost pus terminatorul de sir, deci sirul va fi afisat corect

  b.      Se poate face pur si simplu, folosind cin>>. Caracterul nul este adaugat automat. Dezavantajul este ca in acest fel nu se pot citi siruri care contin mai multe cuvinte separate prin spatii. Citirea sirului se sfarseste la intalnirea primului caracter blank (de ex, daca se citeste ora de informatica, variabila c va retine numai ora”).

Exemplu char c[30]; cin>>c; cout<<c;

  c.    Se poate folosi o functie speciala pentru citirea sirurilor de caractere, inclusa in bibliotecstring.h (varianta recomandata).

Exemplu

char a[30],x;int  nr;             cin.get(a, nr, x );

Functia cin.get citeste un sir de caractere sau pana cand au fost citite nr-1 caractere, sau daca s-a

intalnit caracterul x. Al treilea parametru poate lipsi, caz in care el este implicit caracterul \n (new line). Sunt citite si caracterele albe, caracterul NULL este inserat automat iar caracterul transmis ca ultim parametru nu este inserat in sir.

E xemplu

char a[30];

cin.get(a,5,’s’);         //daca se citeste sirul maimuta, variabila a va retine  maim” 

cin.get(a,15,’s’);  //daca se citeste sirul maimuta, variabila a va retine  maimuta” 

cin.get(a,15,’t’);   //daca se citeste sirul maimuta, variabila a va retine  maimu”

2                   cin.get(a,4,’t’);         //daca se citeste sirul maimuta, variabila a va retine  mai

cin.get(a,10);      //daca se citeste sirul maimuta, variabila a va retine  maimuta”

                   Functia cin.get( ) fara parametri are rolul de a citi un caracter (alb sau nu).

 

Observatie : In cazul utilizarii repetate a functiei cin.get(a,nr,x), dupa fiecare folosire trebuie citit caracterul de la sfarsitul fiecarui sir , adica ‟\n‟ (in caz contrar, acest caracter va fi incarcat la inceputul urmatorului sir, a carui citire se termina la caracterul Enter, deci citirea celui de-al doilea sir se termina inainte de a incepe, iar al doilea sir va fi sirul vid). Aceasta citire a caracterului \n‟ se realizeaza folosind cin.get() fara parametri.

 

Exemplu

char a[30],b[30];

cin.get(a,15);

cin.get(b,10);

Daca se incearca citirea sirurilor sarbatoare si vacanta, se observa ca a=sarbatoare, b=

(nici nu apucam sa citim sirul b). Varianta corecta este:

cin.get(a,15);

cin.get();

cin.get(b,10);

 

Afisarea unui sir de caractere se face folosind cout.

                                                     cout<<a;

Se poate afisa si caracter cu caracter, ca in cazul tablourilor, dar aceasta varianta nu este recomandata.

1. Sa se scrie un program C++ care citeste un sir de caractere care poate sa contina inclusiv spatii. Sa se numere cate litere mari, cate litere mici si cate cifre contine sirul.
Propune o soluție

S
o
l
u
ț
i
a:
Introdu următorul text: 696841418
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char sir[256];

cout<<"Sirul ";
cin.get(sir,256);
cin.get();
int L, l, c;
L=l=c=0;
for (int i=0; i<strlen(sir); i++)
  {
      if(sir[i]>='A' && sir[i]<='Z')
        L++;
     if(sir[i]>='a' && sir[i]<='z')
        l++;
    if(sir[i]>='0' && sir[i]<='9')
        c++;
  }
  cout<<L<<" "<<l<<" "<<c;
return 0;
}
2. Sa se scrie un program C++ care citeste un cuvant de maxim 30 de caractere. Sa se afiseze toate cuvintele care se obtin din eliminarea unui caracter din cuvant.
Propune o soluție

S
o
l
u
ț
i
a:
Introdu următorul text: 372574433
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char sir[256];

cout<<"Sirul ";
cin.get(sir,256);
cin.get();

for (int i=0; i<strlen(sir); i++)
  {
      for (int j=0; j<strlen(sir); j++)
        if(i!=j)
          cout<<sir[j];
      cout<<endl;
}
return 0;
}

Fii primul care comentează lecţia
     Submit
  |   Lectia 18   |   Lectia 19   |   Lectia 20   |   Lectia 21
Lectia 23   |   Lectia 24
Lectia 36
a XI-a B0 lecții INFORMATICĂ | 0 lecții T.I.C.
a XI-a C0 lecții INFORMATICĂ | 0 lecții T.I.C.
a XI-a D0 lecții INFORMATICĂ | 9 lecții T.I.C.
T.I.C.
Fişa 01   |   Fişa 02
Lectia 01   |   Lectia 02   |   Lectia 03   |   Lectia 04   |   Lectia 05   |   Lectia 06   |   Lectia 07
a XI-a E0 lecții INFORMATICĂ | 1 lecții T.I.C.
T.I.C.
Fişa 01
a XII-a A2 lecții INFORMATICĂ | 0 lecții T.I.C.
Informatică
Lectia 01   |   Lectia 02
a XII-a B0 lecții INFORMATICĂ | 0 lecții T.I.C.
a XII-a C0 lecții INFORMATICĂ | 0 lecții T.I.C.
a XII-a D0 lecții INFORMATICĂ | 0 lecții T.I.C.
a XII-a E0 lecții INFORMATICĂ | 0 lecții T.I.C.
Excelenta A0 lecții INFORMATICĂ | 0 lecții T.I.C.