Sunteți pe pagina 1din 22

APLICAREA STRUCTURILOR DE DATE OMOGENE N

LIMBAJUL DE PROGRAMARE C++

lector superior Vitalie cu

Scopurile:
cercetarea modului de aplicare a
tabelelor unidimensionale n limbajul C++;
prezentarea algoritmilor clasici de
aplicare a vectorilor;
Prezentarea unui set de sarcini practice
de aplicare a vectorilor.

Clasificarea general a structurilor de


date
Din punct de vedere al coninutului, structurile pot fi:
omogene;
neomogene.
n funcie de modul n care sunt memorate structurile de date:
structuri interne;
structuri externe;
La tipurile structurate de date se refer:
tablourile;
nregistrrile;
fiierele;
indicatorii.

Declararea tablourilor
unidimensionale
<tip> nume[Dim] tabel static;

sau
<tip> *nume tabel dinamic;
unde:
Dim reprezint dimensiunea tabloului;
<tip> reprezint tipul componentelor
tabloului.

Algoritmi clasici de prelucrare a


vectorilor

Citirea i scrierea unui vector;


Inserarea unui element nou naintea primului element,
naintea unui element cu indicele indicat, dup un
element cu indicele indicat, dup ultimul element;
tergerea primului element, unui element de pe poziia
indicat, ultimului element;
Determinarea elementelor minim i maxim dintr-un
vector;
Efectuarea operaiilor de rotire i deplasare la dreapta
sau la stnga;
Ordonarea vectorilor;
Cutarea secvenial i a binar unui element ntr-un
vector;
etc.

Citirea i scrierea unui vector


Citirea unui vector de la tastatur:
#define Nmax 100
int n, x[Nmax];
cout << Dati dimensiunea tabelului: ; cin >> n;
cout << Dati elementele tabelului \n;
for(int i=0; i<n; i++)
cin >> x[i];

Afiarea unui vector la ecran.


void Afisare(int n, int x[], char mesaj[])
{
cout << Tabelul : << mesaj;
for(int i=0; i<n; i++)
cout << setw(8) << x[i];
cout << endl;
}

Completarea n mod aleator i


iniializarea unui vector
Iniializarea tabelelor unidimensionale:
int num[20] = {1, 3, 5, 7, 9, 11, 13, 15};
int BancNote[] = {1, 5, 10, 20, 50, 100, 200, 500, 1000, 5000};

Completarea n mod aleator:


int Aleator(int x[])
{
int n;
cout << Dati dimensiunea tabelului: ; cin >> n;
randomize();
for(int i=0; i<n; i++) x[i] = random(101);
return n;
}

Determinarea elementelor minim i


maxim dintr-un vector
Elementul minim:

Elementul maxim:

int Minimum(int n, int x[])


{
int i, min;
min = x[0];
for(i=1; i<n; i++)
if(x[i]<min)
min = x[i];
return min;
}

int Maximum(int n, int x[])


{
int i, max;
max = x[0];
for(i=1; i<n; i++)
if(x[i]>max)
max = x[i];
return max;
}

Efectuarea operaiilor de rotire i


deplasare la dreapta sau la stnga
//--Rotire Stinga ---

//--Rotire Dreapta ---

int RotireStinga(int n, int x[])


{
Int k=4;
int i, aux, j;

for(j=1; j<=k; j++){

aux = x[0];
for(i=0; i<n-1; i++)
x[i] = x[i+1];
x[n-1] = aux;
return 1;
}

int Rotire Dreapta(int n, int x[])


{
int i, aux;
if(n==0) return 0;
aux = x[n-1];
for(i=n-1; i>0; i--)
x[i] = x[i-1];
x[0] = aux;
return 1;
}

Ordonarea elementelor vectorilor


a)
b)
c)
d)
e)
f)
g)

Metoda seleciei simple:


Metoda seleciei :
Metoda bulelor:
Metoda bulelor optimizat:
Metoda inserrii:
Metoda ShellSort;
etc.

Metoda bulelor optimizat de ordonare a


elementelor vectorilor
//-------------Sortare --Metoda bulelor ---------int Sortare(int n, int x[]) {
int i, j=0, m, aux;
if(n==0) return 0;
do {
m = 0; j++;
for(i=0; i<n-j; i++)
if(x[i]>x[i+1]) {
aux = x[i]; x[i] = x[i+1]; x[i+1] = aux; m = 1;
}
} while(m);
return 1;
}

Inserarea unui element nou


naintea primului element:
//-----Inserare1-----int Inserare(int n, int x[], int k)
{
int i;
if(n==0) return 0;
n++;
for(i=n-1; i>0; i--)
x[i] = x[i-1];
x[0] = k;
return 1;
}

dup ultimul element.

naintea unui element cu


indicele indicat:
//----Inserare2-----int Inserare(int n,int x[],int k, int j)
{
int i;
if(n==0) return 0;
n++;
for(i=n-1; i>=j; i--)
x[i] = x[i-1];
x[j-1] = k;
return 1;
}

dup un element cu indicele


indicat;

tergerea unui element dintr-un vector


tergerea primului
element:
//----Stergere1----int Stergere(int &n, int x[])
{
int i;
if(n==0) return 0;
n--;
for(i=0; i<n; i++)
x[i] = x[i+1];
return 1;
}

tergerea unui element de


pe poziia indicat:
//-----Stergere2------int Stergere(int n, int x[], int k) {
int i;
if(n==0) return 0;
n--;
for(i=k-1; i<n; i++)
x[i] = x[i+1];
return 1;
}

tergerea ultimului
element:
//----Stergere3----int Stergere(char, int n, int x[]) {
if(n==0) return 0;
n--;
return 1;
}

Cutarea secvenial i binar a unui


element ntr-un vector

Cutarea secvenial a unui element ntr-un vector;


Cutarea binar a unui element ntr-un vector.

Funcionalitatea programului
Comparaii ntre elemente;
Statistica elementelor tabelelor unidimensionale;
Aranjarea elementelor;
Elevi sportivi;
Interschimbare elemente;
Generare vector din ali doi vectori;
Statistica elementelor tabelelor bidimensionale
dreptunghiulare;
Statistica elementelor tabelelor bidimensionale
ptratice.

Este dat un vector de numere


ntregi. De determinat
urmtoarele:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.

suma elementelor;
produsul elementelor de la 1 la 10;
media aritmetica a elementelor;
elementele mai mari ca media tabelului;
numrul de elemente pozitive, nule i negative;
numrul de elemente pare i impare;
suma elementelor de pe locuri pare i impare;
elementele minim i maxim;
numrul de elemente consecutive egale;
3 elemente consecutive, suma crora este maximal.

Este dat un vector de numere ntregi


1. S se ordoneze cresctor aplicnd
metoda seleciei simple;
2. S se ordoneze descresctor
aplicnd metoda seleciei simple;
3. S se transfere n alt tabel
elementele, multiple lui 5.

Este data o matrice dreptunghiular de


numere ntregi. De determinat:
1.
2.
3.
4.
5.
6.
7.
8.

suma tuturor elementelor;


media aritmetica a elementelor;
numrul de elemente pozitive, nule si negative;
numrul de elemente pare i impare;
elementele minim si maxim;
numrul de apariie a unui element;
suma elementelor pe linii i coloane;
elementele minim i maxim de pe linii i coloane.

Este data o matrice ptratic de numere


ntregi. De determinat:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.

suma tuturor elementelor;


media aritmetica a elementelor;
numrul de elemente pozitive, nule si negative;
numrul de elemente pare i impare;
elementele minim si maxim;
numrul de apariie a unui element;
suma elementelor pe linii i coloane;
elementele minim i maxim de pe linii i coloane;
suma elementelor pe diagonalele principal i secundar;
suma elementelor subdiagonale si supradiagonale.

TEHNOLOGII INFORMAIONALE APLICATE LA


ELABORAREA SUPORTURILOR DIDACTICE

Adobe Dreamweaver.Adobe Dreamweaver este o aplicaie de


dezvoltare Web;

Limbajul de marcare HTML este un limbaj de marcare utilizat


pentru crearea paginilor web;

Standardul winhelp elaboreaz suporturi didactice


descktop.

CSS. sunt etichete folosite pentru formatarea paginilor


web.

REZOLVAREA PROBLEMELOR, BAZATE PE


UTILIZAREA MATRICELOR, VECTORILOR I
IRURILOR
Exemplu. ntr-un tabel se pstreaz greutatea unor
sportive (n kg) - numere ntregi. De determinat lista
sportivelor cu greutatea ntre 50 i 60 kg.
k := 0;
for i:=1 to 30 do
if (a[i]>=50) and (a[i]<=60) then k:=k+1;
if k=0 then writeln('Nu-s sportive cu greutatea de la
50 la 60 kg')
else writeln(' Sunt ', k, ' sportive cu greutatea de la 50
la 60 kg);

Concluzii
Utilizarea tabelelor unidimensionale permite de a
pstra o informaie omogen ca un tot ntreg;
Cu ajutorul tabelelor unidimensionale i
bidimensionale pot fi implementate diferite operaii din
matematic i informatic;
Utilizarea a aa produse soft, cum ar fi PowerPoint,
Adobe Dreamweaver, HTML, WinHelp permit de a
prezenta informaia ntr-o form mai concis, mai
atrgtoare;
Aplicarea tabelelor bidimensionale permite simularea
aplicrii matricelor structuri alctuite din rnduri i
coloane, des ntlnite n practic;
Programul realizat este destul de util la nsuirea
operaiilor de stocare i prelucrare a tabelelor
unidimensionale i bidimensionale.

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