Sunteți pe pagina 1din 7

1.

SIRURI DE CARACTERE
1.1. Citirea / scrierea sirurilor de caractere.
Inainte de citirea unui sir de caractere acesta trebuie declarat. Pentru a declara un sir de caractere se
utilizeaza functia:
char nume sir[nr.elemente sir]
Exemplu: char sir1[100] - sa declarat sirul cu numele sir1 care poate lista 100 caractere
Pentru citirea sirurilor de caractere se utilizeaza functia:
cin.get(vector de caractere, int nr, char='\n')
Observatie. Dupa tastarea unui sir de caractere , la apasarea tastei Enter se intrerupe citirea . Daca
dorim sa introducem mai multe siruri de caractere se utilizeza cin.get() astfel
char s1[20],s2[20];
cin.get(s1,20];
cin.get();
cin.get(s2,20);
cout<<s1<<endl<<s2;
Daca ar lipsii functia cin.get() a doua citire nu ar putea fi efectuata, deoarece la apasarea tastei Enter in
memorie este pastrat caracterul '\n' , fapt care duce la intreruperea citirii.
Exemplu:
#include<iostream.h>
#include<conio.h>
void main() {
char s1[20],s2[20];
cin.get(s1,20); cin.get(); cin.get(s2,20);
clrscr();
cout<<s1<<endl<<s2;
getch();
}
Observatie. Se pot scrie mai multe siruri de cuvinte daca declaram o matrice de tip char
char a[10][20] se pot scrie 10 siruri cu cate 20 caractere fiecare sir (fara spatiu)
Exemplu:
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main(){
char a[10][20]; int n,i;
cout<<"Nr.cuvinte ";cin>>n;
for(i=0;i<n;i++) cin>>a[i];clrscr(); for(i=0;i<n;i++) cout<<a[i]<<endl;
getch();}
1.2. Functii si algoritmi care lucreaza cu siruri de caractere.
Pentru a utiliza functiile care lucreaza cu sirurile de caractere trebuie inclusa directiva
#include<string.h>
1.2.1. Functia strlen.
Are rolul de a returna lungimea unui sir(fara a lua in considerare caracterul nul).
Forma generala : strlen(nume sir);
Exemplu: Se citeste un sir de caractere si se afiseaza numarul de caractere a sirului
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main() {
char s1[100];
cin.get(s1,100);
cin.get();
cout<<"Sirul citit are"<<" "<<strlen(s1)<<" "<<"caractere";
getch(); }

1.2.2 Functia strcpy.


Forma generala: strcpy(destinatie,sursa)
Functia are roluil de a copia sirul de la adresa sursa la adreasa destinatie.
Exemplu:
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main() {
char s1[20]="Limbalul Turbo C++",s2[20]="Limbajul C++";
strcpy(s1,s2);
cout<<s1;
getch(); }

1.2.3. Functia strcat.


Forma generala: strcat(destinatie,sursa)
Funtia are rolul de a adauga sirului de la adresa destinatie sirul de la adresa sursa
Exemplu:
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main()
{
char s1[20]="Limbajul Turbo C++",s2[20]=" si Limbajul C++";
strcat(s1,s2);
cout<<s1;
getch();
}
1.2.4. Functia strncat
Forma generala: strncat(destinatie,sursa,n)
Functia adauga sirului destinatie primii n octeti ai sirului sursa
Exemplu:
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main()
{
char s1[20]="Limbajul Turbo C++",s2[20]=" si Limbajul C++";
strncat(s1,s2,5);
cout<<s1;
getch();
}

1.2.5. Functia strchr


Forma generala: strchr(nume sir, ' caracter ' )
Functia cauta in sirul nume sir caracterul caracter si returneaza subsirul care incepe cu prima aparitie a
caracterului citit
Exemplul1: se va lista Turbo C++

#include<iostream.h>
#include<conio.h>
#include<string.h>
void main()
{
char s1[20]="Limbajul Turbo C++";
cout<<strchr(s1,'T');
getch();
}
Exemplul2: Se tipareste indicele primei aparitii a caracterului 'u'
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main()
{
char s1[20]="Limbajul Turbo C++";
cout<<strchr(s1,'u')-s1;
getch();
}
Returneaza valoarea 6

1.2.6. Functia strrchr


Returneaza adresa ultimei aparitii a caracterului cautat strrchr(sir, 'caracter' )
char s1[20]="Limbajul Turbo C++";
cout<<strrchr(s1,'u')-s1;

Returneaza valoarea 10
1.2.7. Functia strcmp
Forma generala strcmp(sir1, sir2 )
Functia are rolul de a compara 2 siruri de caractere si va returna valoarea:
< 0 daca sir1<sir2
= 0 daca sir1=sir2
> 0 daca sir1>sir2

Exemplu1. Se compara sirul a cu sirul b si se listeaza relatia dintre cele 2 siruri astfel:
- daca primele n caractere sunt identice se compara caracterele n+1
- daca caracterul n+1 al sirului a este situat alfabetic inaintea cracterului n+1 al sirului b se
afiseaza a<b
- daca caracterul n+1 al sirului a este situat alfabetic dupa cracterul n+1 al sirului b se
afiseaza a>b
- daca primul caracter al sirului a este situat alfabetic inaintea primului caracter al sirului b se afiseaza
a<b indiferent de lungimea celor 2 siruri
- daca primul caracter al sirului a este situat alfabetic dupa primul caracter al sirului b se afiseaza a>b
indiferent de lungimea celor 2 siruri
Exemplul1:
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main()
{
char a[20],b[20];
int semn;
cout<<"Introduceti sirul a: "; cin>>a;
cout<<"Introduceti sirul b: "; cin>>b;

semn=strcmp(a,b);

if(semn<0) cout<<"a < b";


else
if(semn>0) cout<<"a > b";
else cout<<"a = b";
getch();
}

Exemplul2. Se citesc n cuvinte si se ordoneaza alfabetic crescator si descrescator.


#include<iostream.h>
#include<conio.h>
#include<string.h>
void main(){
char a[100][10],temp[10];
int i,n,gasit;
cout<<"Introduceti numarul de persoane "; cin>>n;
cout<<"Scrie numele persoanelor"<<endl;
for(i=0;i<n;i++) cin>>a[i];
do
{
gasit=0;
for(i=0;i<n-1;i++) if(strcmp(a[i],a[i+1])>0)
{
strcpy(temp,a[i]);
strcpy(a[i],a[i+1]);
strcpy(a[i+1],temp);
gasit=1;
}
}
while(gasit);

cout<<"Ordinea alfabetica crescatoare a persoanelor scrise este:"<<endl;


for(i=0;i<n;i++) cout<<a[i]<<endl;

cout<<"Ordinea alfabetica descrescatoare a persoanelor scrise este:"<<endl;


for(i=n;i>=0;i--) cout<<a[i]<<endl;

getch();
}

1.2.8. Functiile strlwr si struwr


strlwr(s1) - converteste toate literele sirului s1 in litere mici
strupr(s2) - converteste toate literele sirului s2 in litere mari
Exemplu:
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main()
{
char a[100]="este acesta un sir?", b[100]="Acest Lucru Nu Ma Deranjeaza";
cout<<strupr(a)<<endl<<strlwr(b);
getch();
}

1.2.9. Functia strstr


Forma generala: strstr(sir1,sir2)
Functia identifica daca sirul sir2 este subsir al sirului sir1
1.2.10. Functia strcspn
Forma generala: strcspn(s1,s2)
Functia returneaza numarul caracterelor din sirul s1 care nu se gasesc in sirul s2
1.2.11. Functia spn
Forma generala: strspn(s1,s2)
Functia returneaza numarul caracterelor din sirul s1 care se gasesc in sirul s2
1.2.12. FUNCTII UTILIZATE PENTRU CONVERSIA VALORILOR NUMERICE IN SIR
La utilizarea acestor functii se introduce directiva #include<stdlib.h>
a) Functia atof - converteste un sir catre tipul double
b) Functia atold - converteste un sir catre tipul long double
Exemplu:
#include <stdlib.h>
#include <iostream.h>
#include<conio.h>
void main() {
float f;
char *str = "12345.67";
f = atof(str);
cout<<"string = "<<str<<endl<<"float = "<< f;
getch(); }

c) Functia atoi - converteste un sir catre tipul int


d) Functia atol - converteste un sir catre tipul long
Exemplu:
#include <stdlib.h>
#include <iostream.h>
#include<conio.h>
void main()
{
int n;
char *str = "12345.67";
n = atoi(str);
cout<<"string = "<<str<<endl<<"float = "<< n;
getch();
}
e) Functia ecvt - converteste o valoare dubla catre un sir
f) Functia itoa - converteste o valoare de tip intreg catre un sir
g) Functia ltoa - converteste o valoare de tip long int catre un sir

2. TIPUL INREGISTRARE
2.1. Inregistrari simple.
Pentru gruparea variabilelor de mai multe tipuri utilizate pentru o inregistrare se foloseste:
struct nume structura
{ tip variabila nume variabila, nume variabila ;
tip variabila nume variabila;
} lista variabile;
Un exemplu de stuctura:
struct elev
{ char nume[15],prenume[20];
int telefon;
float media;
}inr1,inr2;
Exemplu:
#include <stdlib.h>
#include <iostream.h>
#include<conio.h>
struct elev
{
char nume[15],prenume[20],clasa[10];
int tel;
float med;
} inr;

void main()
{
cout<<"Nume ";cin>>inr.nume;
cout<<"Prenume ";cin>>inr.prenume;
cout<<"Telefon ";cin>>inr.tel;
cout<<"Clasa ";cin>>inr.clasa;
cout<<"Media generala ";cin>>inr.med;

cout<<"Am citit:"<<endl
<<inr.nume<<" "<<inr.prenume<<endl
<<inr.tel<<endl
<<inr.clasa<<endl
<<inr.med;
getch();
}

2.2. Inregistrari imbricate


Un tip structurat de inregistrare contine in interiorul sau alt tip structurat de inregistrare.
Exemplu de inregistrare imbricata:
struct elev1
{
char nume[15],prenume[20];

struct
{ int clasa;
float note[20];
} sit1,sit2;
int varsta;
};

Tipul structurat elev1 subordoneaza , pe langa alte tipuri, doua structuri sit1 si sit2.

2.3. Inregistrari cu structura variabila


Se utilizeaza cand inregistrarile nu au format fix ci un format variabil.

S-ar putea să vă placă și