Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Tablouri unidimensionale - Vectori

c



+ Font mai mare | - Font mai mic



Tablouri unidimensionale

Vectori

Adeseori in programe se folosesc grupe mari de date. Gruparea acestora se face in mai multe moduri. Un mod simplu de a grupa datele este de a grupa datele este de a considera date de acelasi tip in asa fel incat grupa respectiva sa formeze o multime ordonata de elemente la care ne referim prin indici. O astfel de grupa se numeste tablou. Unui tablou i se da un nume; tipul comun al elementelor este si tipul tabloului respectiv. De exemplu o multime ordonata de intregi reprezinta un tablou de tip intreg.



In cazul cand elementele care se grupeaza intr-un tablou sunt ele insele tablouri vom avea nevoie de mai multi indici pentru a ne referi la ele; in acest caz avem un tablou multidimensional (n-dimensional, n fiind numarul de indici) altfel - tablou unidimensional.

Exemple simple de tablouri unidimensionale sunt vectorii cu componentele de acelasi tip. O matrice este un tablou bidimensional.

Referirea la elementele unui tablou se face printr-o variabila cu indici. O variabila cu indici se compune din numele tabloului urmat de valorile indicilor fiecare indice fiind reprezentat de o expresie inclusa intre paranteze patrate.

Valoarea inferioara a indicilor este 0, iar cea superioara este (dimensiunea-1). De exemplu daca vect este un tablou cu 10 elemente (de dimensiune 10) atunci ne referim la elementele lui cu ajutorul variabilelor cu indici:

vect[0] primul element

vect[9] ultimul element

Daca mat este o matrice de 3 linii a doua coloane fiecare atunci elementele vor fi referite prin:

mat[0][0] mat[0][1] prima linie

mat[1][0] mat[1][1] a doua linie

mat[2][0] mat[2][1] a treia linie

Declaratia de tablou

Un tablou ca orice variabila simpla trebuie declarat inainte de a fi utilizat. Declaratia de tablou in forma cea mai simpla contine tipul comun elementelor sale, numele tabloului si limitele superioare pentru fiecare indice incluse intre paranteze patrate:

tip nume [lim_1][lim_2][lim_n] =

unde tip este tipul de baza al tabloului iar lim_i este limita superioara a celui de al i-lea indice; inseamna ca indicele al i-lea poate lua valorile: 0, 1,, lim_n-1 (lim_n - sunt expresii constante).

La intalnirea unei declaratii de tablou compilatorul aloca o zona de memorie necesara pastrarii valorii elementelor sale.

Exemple

Instructiunile de citire a primelor n elemente ale unui vector

for(i=0; i<n; i++) cin>>a[i];

Instructiunile de scriere a primelor n elemente ale unui vector

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

Operatii cu elemente unui vector

Sa se alcatuiasca un program care sa determine valoarea minima, maxima, suma si media elementelor unui sir de numere reale.

Strategia de rezolvare

Va fi citit mai intai numarul curent de elemente ale sirului, iar apoi vor fi citite succesiv elementele sirului folosind o variabila intermediara temp.

Pentru determinarea valorii minime si maxime a sirului se initializeaza atat minimul cat si maximul cu prima pozitie din sir, dupa care, succesiv, vor fi comparate elementele sirului cu minimul curent si respectiv cu maximul curent. Daca valoarea comparata a elementului sirului este mai mare decat maximul curent, atunci aceasta valoare devine maximul curent. Similar se petrec lucrurile pentru valoarea minima.

Pentru calculul sumei elementelor sirului, variabila suma se initializeaza cu zero, dupa care fiecare element al sirului se adauga la valoarea curenta a sumei, conform relatiei: suma= suma + a[i], relatie ce poate fi scrisa simplificat astfel: suma+=a[i]. Media aritmetica se calculeaza prin raportarea sumei elementelor la numarul de elemente din sir.

Programul

Program 6.

Determinarea valorilor minima si maxima ale unui sir de numere reale.

Determinarea sumei elementelor sirului si a mediei aritmetice a acestora.*/

#include<stdio.h>

#include<conio.h>

void main()

min=a[1];max=a[1];

for(i=2;i<N+1;i++)

suma=0;

for(i=1;i<N+1;i++)

suma+=a[i];

media=float(suma)/N;

printf('Valoarea minima a sirului MIN =%gn',min);

printf('Valoarea maximii a siruJui MAX =%gn',max);

printf('Suma elementelor sirului SUMA =%gn',suma);

printf('Valoarea medie a sirului MED =%gn',media);

N=getche();

Produsul scalar a doi vectori

Programul

#include<iostream.h>

main()

for (i=0;i<n;i++)

p=0;

for (i=0;i<n;i++) p+=a[i]*b[i];

cout<<"Produsul="<<p;

Sortarea crescatoare a elementelor unui vector cu elemente reale

Pseudocodul

1. Citeste n

2. Pentru i=0,n-1 citeste v[i]

3. m=n, sort=0

4. Cat timp (m>0) si (sort=0)

4.1. sort=1

4.2. Pentru i=0,m-1

daca (v[i]>v[i+1])

4.2.1. sort=0

4.2.2. aux=v[i]

4.2.3. v[i]=v[i+1]

4.2.4. v[i+1]=aux

4.3. m=m-1

5. Pentru i=0,n-1 scrie v[i]

Programul

//Sortarea elementelor unui vector

#include<iostream.h>

void main()

m=n;

while((m>0)&&(sort==0))

m--;

}

for(i=0;i<n;i++)

cout<<'nv['<<i<<']= '<<v[i];

Stoilescu Problema 5:

Sa se faca rearanjarea liniilor unei matrice astfel incat elementele de pe diagonala principala sa fie elementele de maxim ale fiecarei linii. Se considera ca elementele matricei sunt distincte.

Vom determina mai intai coloanele elementelor de maxim ale fiecarei linii intr-un vector c. Apoi vom verifica daca valorile coloanelor sunt distincte, in caz contrar nu este posibila rearanjarea liniilor conform cerintelor problemei.

Exemplu:: Dimensiunea matricei: 3. Elementele matricei: . O solutie este:

Programul

#include<stdio.h>

int c[10],mat1[10][10],mat[10][10],i,j,poz,max1,n;

int maxim(int i) ;

void main()

/* Copierea liniilor cu maximul pe diagonala principala in alta matrice */

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

mat1[c[i]][j]=mat[i][j];

puts('O solutie este: ');

for(i=1;i<=n;i++)

int maxim(int i)

return poz;



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1278
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved