0% au considerat acest document util (0 voturi)
69 vizualizări6 pagini

C# - Vectori

Documentul prezintă noțiuni de bază despre vectori în C#, inclusiv declarația, inițializarea și parcurgerea acestora. Sunt prezentate exemple de cod care generează, ordonează și afișează elementele unui vector.

Încărcat de

Ştefan Şălaru
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
69 vizualizări6 pagini

C# - Vectori

Documentul prezintă noțiuni de bază despre vectori în C#, inclusiv declarația, inițializarea și parcurgerea acestora. Sunt prezentate exemple de cod care generează, ordonează și afișează elementele unui vector.

Încărcat de

Ştefan Şălaru
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd

VECTORI

Apărut la 30 septembrie 2011 în C#   |   autor: Dan Pracsiu7 comentarii

Vom menţiona un lucru important încă de la începutul acestui articol. În C# tipurile de date se
împart în tipuri valoare şi tipuri referinţă. Tipurile valoare sunt tipurile simple (de exemplu int,
int16, int64, double, char etc., precum şi tipul string). Variabilele de aceste tipuri se iniţializează
într-o atribuire de tipul

v = expresie

De exemplu:

int x = 2;

char ch = 'A';

string s = "I am a Sith Lord";

Tipurile referinţă sunt tablourile, structurile, clasele. Variabilele (obiectele) de aceste tipuri se
iniţializează printr-o instrucţiune de forma:

t = new ...

P05. Se citeşte un număr natural n. Să se memoreze într-un vector primele n pătrate


perfecte.

static void Main(string[] args)

int i, j, n;

int[] t;

[Link]("n = ");

n = [Link]([Link]());

// initializare vector cu n componente:

t = new int[n];
Random r = new Random();

// generarea celor n numere aleatoare:

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

t[i] = [Link](0, 100);

// afisarea elementelor tabloului:

[Link]("Vectorul generat initial:");

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

[Link](t[i] + " ");

[Link]();

// ordonare crescatoare:

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

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

if (t[i] > t[j])

int aux = t[i];

t[i] = t[j];

t[j] = aux;

// reafisarea vectorului:
[Link]("Vectorul dupa ordonare:");

for (i = 0; i < [Link]; i++)

[Link](t[i] + " ");

[Link]();

Remarcaţi mai întâi modul în care se declară un tablou. Este diferit faţă de C++. Dacă scriu
linia: int[] a, b, c; înseamnă că toate cele trei variabile a, b, c sunt vectori.
Iniţializarea tabloului se face abia după citirea numărului n. În acest fel spaţiul de memorie utilizat
este exact cât este necesar. Componentele vectorului sunt indexate de la 0 la n-1. După utilizarea
vectorului, acesta poate fi dealocat. Acest lucru se realizează în ultima linie de program, mai simplu
decât în C++. Nu trebuie să ne facem griji cu faptul că am lăsat "gunoi" în memorie. Există clasa
GC (Garbage Collector) care dacă e nevoie se lansează automat pentru a elibera memorie. Dar
putem face asta printr-o instrucţiune de forma: [Link]();
P06 Să se genereze n numere naturale aleatoare care se vor memora într-un vector. Se
vor ordona apoi crescător elementele vectorului.

static void Main(string[] args)

int i, j, n;

int[] t;

[Link]("n = ");

n = [Link]([Link]());

// initializare vector cu n componente:

t = new int[n];

Random r = new Random();


// generarea celor n numere aleatoare:

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

t[i] = [Link](0, 100);

// afisarea elementelor tabloului:

[Link]("Vectorul generat initial:");

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

[Link](t[i] + " ");

[Link]();

// ordonare crescatoare:

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

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

if (t[i] > t[j])

int aux = t[i];

t[i] = t[j];

t[j] = aux;

// reafisarea vectorului:

[Link]("Vectorul dupa ordonare:");


for (i = 0; i < [Link]; i++)

[Link](t[i] + " ");

[Link]();

Pentru generarea aleatoare utilizăm un obiect al clasei Random. Cu funcţia membră Next a


claseiRandom se pot genera numere aleatoare astfel:

x = [Link](); // se genereaza un numar natural aleator intreg

x = [Link](50); // se genereaza un numar natural aleator intre 0 si 49

x = [Link](1, 100); // se genereaza un numar natural aleator cuprins intre 1 si 99

Pentru ordonare am folosit un algoritm Bubblesort. Observaţi de asemenea o modificare în a doua


afişare a vectorului. În instrucţiunea for, în loc să utilizăm n am folosit
expresia [Link] Aceasta este o proprietate care furnizează lungimea vectorului t. Mai multe
despre Proprietăţi vom vorbi într-o lecţie ulterioară legată de clase în C#.
Observaţie: pentru sortarea crescătoare a vectorului t se putea utiliza şi funcţia statică Sort din
clasaArray:

[Link](t);

P07. Utilizarea instrucţiunii foreach pentru parcurgerea elementelor unei colecţii.

static void Main(string[] args)

int[] t = new int[10] { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 };

// afisarea elementelor tabloului cu instructiunea foreach:

foreach (int x in t)

[Link](x + " ");


}

Remarcaţi modul în care se poate iniţializa un vector la declarare. Alte modalităţi la fel de corecte
pentru iniţializare la declarare a unui vector sunt:

int[] t = { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 };

int[] t = new int[] { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 };

Privitor la instrucţiunea foreach, ea este folosită pentru parcurgerea elementelor unei colecţii, în


cazul nostru colecţia fiind tabloul. Instrucţiunea foreach utilizează o variabilă întreagă x care de
fapt preia pe rând fiecare valoare din vectorul t şi o afişează. Nu este necesar să cunoaştem astfel
lungimea tabloului. Atenţie, x nu este indice, x preia pe rând valorile lui t[0], t[1], ...

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