Tablouri C# 2 - 1 Tablouri Tablouri unidimensionale Limbajul C# trateazؤƒ tablourile أ®ntr-o...

Tablouri C# 2 - 1 Tablouri Tablouri unidimensionale Limbajul C# trateazؤƒ tablourile أ®ntr-o manierؤƒ page 1
Tablouri C# 2 - 1 Tablouri Tablouri unidimensionale Limbajul C# trateazؤƒ tablourile أ®ntr-o manierؤƒ page 2
Tablouri C# 2 - 1 Tablouri Tablouri unidimensionale Limbajul C# trateazؤƒ tablourile أ®ntr-o manierؤƒ page 3
Tablouri C# 2 - 1 Tablouri Tablouri unidimensionale Limbajul C# trateazؤƒ tablourile أ®ntr-o manierؤƒ page 4
Tablouri C# 2 - 1 Tablouri Tablouri unidimensionale Limbajul C# trateazؤƒ tablourile أ®ntr-o manierؤƒ page 5
download Tablouri C# 2 - 1 Tablouri Tablouri unidimensionale Limbajul C# trateazؤƒ tablourile أ®ntr-o manierؤƒ

of 5

  • date post

    16-Sep-2019
  • Category

    Documents

  • view

    6
  • download

    0

Embed Size (px)

Transcript of Tablouri C# 2 - 1 Tablouri Tablouri unidimensionale Limbajul C# trateazؤƒ tablourile أ®ntr-o...

  • 1

    Tablouri

    Tablouri unidimensionale Limbajul C# tratează tablourile într-o manieră nouă faţă de alte limbaje (Pascal, C/C++).

    La declararea unui tablou, se creează o instanţă a clasei .NET, System.Array. Compilatorul va traduce operaţiile asupra tablourilor, apelând metode ale System.Array. Declararea unui tablou unidimensional se face astfel:

    Prin această declaraţie nu se alocă şi spaţiu pentru memorare. Pentru aceasta, tabloul trebuie instanţiat:

    Se pot face în acelaşi timp operaţiile de declarare, instanţiere şi iniţializare:

    sau

    Exemplu: Crearea, sortarea şi afişarea unui vector: namespace SortareTablou { class Program { static void Main(string[] args) { int[] v = new int[5] { 10, 8, 2, 4, 6 }; //instantiaza si initializeaza tabloul Array.Sort(v); //Metoda Sort din clasa predefinita Array sorteaza crescator tabloul v for (int i = 0; i < v.Length; i++) //Proprietatea Length returneaza numarul de elemente din tabloul v Console.Write("{0,3}", v[i]); Console.ReadLine(); } } }

    Afişarea se poate face şi cu ajutorul lui foreach:

    Exemplu: Ciurul lui Eratostene. Pentru un număr natural n dat se afişează toate numerele prime mai mici decât n. Selectarea numerelor prime se face folosind ciurul lui Eratostene Ciurul lui Eratostene presupune formarea unui şir din numerele 2, 3, 4, …, n-1, n. Pentru a obţine acest şir „tăiem” mai întâi toţi multiplii lui 2, apoi ai lui 3 ş.a.m.d. În final rămân numai numerele prime din intervalul [2,n]. Noţiunea de „tăiere” a unui element va însemna, în acest caz, atribuirea valorii zero pentru acel element.

  • 2

    namespace CiurulLuiEratostene { class Program { static void Main(string[] args) { int n, i, j; int[] c; Console.Write("n="); n = Convert.ToInt32(Console.ReadLine()); c=new int[n+1]; Console.WriteLine("\nNumerele prime

  • 3

    int[] f; Console.Write("Numarul de trepte="); n = Convert.ToInt32(Console.ReadLine()); f = new int[n + 1]; f[1] = f[2] = 1; for (i = 3; i max) { max = a[i]; f = 1; } else if(a[i]==max) f++; Console.WriteLine("Elementul maxim din tablou este {0} si are frecventa {1}", max, f); Console.ReadLine(); } } }

  • 4

    Tablouri bidimensionale Declararea unei matrici se face astfel:

    Instantierea:

    Accesul:

    Exemplu: Declararea instanţierea şi iniţializarea

    sau

    Exemplu: Pentru o matrice pătratică, ale cărei elemente întregi se citesc de la tastatură, să se determine:

     maximul dintre valorile situate deasupra diagonalei principale  numărul de numere prime (dacă acestea există) situate sub diagonala secundară

    namespace PrelucrareMatrice { class Program { static void Main(string[] args) { int i, j, n; Console.Write("Dati dimensiunea matricei patratice : "); n = Convert.ToInt32(Console.ReadLine()); int[,] a= new int[n + 1, n + 1]; Console.WriteLine("Citire matrice : "); for (i = 0; i < n; i++) for (j = 0; j < n; j++) { Console.Write("a[{0}][{1}] = ", i + 1, j + 1); a[i, j] = Convert.ToInt32(Console.ReadLine()); } Console.WriteLine("Afisare matrice : "); for (i = 0; i < n; i++) {

  • 5

    for (j = 0; j < n; j++) Console.Write("{0, 4}", a[i, j]); Console.WriteLine(); } int max = a[0, 1]; for (i = 0; i < n - 1; i++) for (j = i + 1; j < n; j++) if (a[i, j] > max) max = a[i, j]; Console.WriteLine("Maximul dintre valorile situate deasupra diagonalei principale : {0}", max); int k = 0; for (i = 1; i < n; i++) for (j = n - i; j < n; j++) if (prim(a[i, j]) == 1) k++; if (k == 0) Console.WriteLine("Sub diagonala secundara nu sunt numere prime!"); else Console.WriteLine("Sub diagonala secundara sunt {0} numere prime!", k); Console.ReadLine(); } static int prim(int x) { if (x == 1) return 0; if (x % 2 == 0 && x != 2) return 0; for (int d = 3; d * d