Sunteți pe pagina 1din 5

ndrumar laborator Programarea calculatoarelor

Tablouri multidimensionale n C#
Scop:
1. nelegerea noiunii de tablou
2. Declararea i folosirea tablourilor multidimensionale
Tablouri
Un tablou de elemente reprezint o structur de date alctuit din mai multe variabile
de acelai tip de date, referite prin intermediul unui nume comun. Tablourile se utilizeaz
oriunde exist nevoia de a grupa mai multe variabile de acelai tip la un loc pentru a putea fi
gestionate i sortate cu uurin. Accesul se face printr-o variabil referin. Diferena dintre
tablourile din alte limbaje i cele din C#, este c, aici, tablourile sunt implementate ca
obiecte, fapt care conduce la colectarea automat a spaiului ocupat de tablourile neutilizate.
Tablouri multimensionale
Pe langa vectori, cel mai utilizat tip de tablou de numere este tabloul bidimensional,
numit de cele mai multe ori matrice.
n C# exist dou tipuri de tablouri multidimensionale, i anume: tablouri rectangulare
(dreptunghiulare) i neregulate.1 Denumirea lor vine de la forma pe care o pot avea.
Tablouri rectangulare
Tablourile rectangulare sunt matricele care au acelai numr de elemente pe fiecare
linie. De aceea se mai numesc i tablouri dreptunghiulare. Dac numrul de linii este egal cu
numrul de coloane, atunci matricea este ptratic i putem vorbi de diagonalele principal i
secundar.
Declararea unui tablou rectangular se face astfel:
tip_de_baza [dimensiune_1 , dimensiune_2] nume;

Exemplu:
double [10 , 5] a;

//tablou cu 10 linii i 5 coloane de elemente reale

int [3 , 2] a;

//tablou cu 3 linii i 2 coloane de elemente ntregi

La declararea tabloului se poate face i iniializarea.


Observaie! Valorile atribuite elementelor tabloului trebuie s fie de acelai tip.
Exemplu:
int [,] a=new int[,] {{1,2},{3,4}}

sau
int [,] a= {{1,2},{3,4}} ;

Engl: jagged arrays

Laborator vectori multidimensionali

Pentru a putea avea acces la valoarea unui element al matricei, trebuie precizat linia
i coloana pe care se afl acesta. Referirea la elementul aflat pe linia i i coloana j se face cu
a[i,j] unde i i j au valoarea minim zero. Pentru matrice se va citi o valoare m-numrul
maxim de linii i o valoare n-numrul maxim de coloane. O matrice cu m linii i n coloane va
avea m*n elemente. Dac m = n atunci matricea se numete matrice ptratic de ordin n.
Exemplu:
Declararea i citirea unei matrici cu m linii i n coloane:
int m,n,i,j;
Console.Write("m= ");
m = int.Parse(Console.ReadLine());
Console.Write("n= ");
n = int.Parse(Console.ReadLine());
int [,] a=new int[m,n]
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
Console.Write("a[{0},{1}] = " ,I,j);
a[i, j] = int.Parse(Console.ReadLine());
}
}

Tablouri neregulate
Tablourile neregulate sunt tablourile n care fiecare linie este privit ca un vector ce
trebuie iniializat separat. Astfel este posibil ca dou linii s nu aib aceeai lungime. Aceste
tablouri sunt utile, de exemplu, pentru memorarea eficient a listelor de adiacen asociate
grafurilor, astfel c o linie i va reine adiacenii vrfului i din graf.
Declararea unui tablou neregulat se face ca i n cazul tablourilor rectangulare.
Exemplu:
Programul de mai jos conine declararea, iniializarea i afiarea elementelor unui
matrici neregulate.
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int i, j;
int[][] a;
a = new int[3][]
{
new int[]{ 1, 1, 1 }, // initializare prima linie
new int[]{ 2, 2, 2, 2, 2 }, // initializare a doua linie
new int[]{ 3, 3, 3, 3 } // initializare a treia linie
};

ndrumar laborator Programarea calculatoarelor

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


{
for (j = 0; j < a[i].Length; j++)
Console.Write(a[i][j] + " ");
Console.WriteLine();
}
}
}
}

Aplicaia 1
S se determine numrul de elemente strict mai mare dect un numr dat dintr-o
matrice dreptunghiular.
Aplicaia 2
S se calculeze valoarea minim dintr-o matrice oarecare de elemente reale i s se
afieze numrul de apariii al acestei valori n matrice.
Aplicaia 3
S se calculeze valoarea maxim dintr-o matrice oarecare de elemente reale i s se
afieze toate poziiile din matrice unde se gsete aceasta.
Aplicaia 4
Se d o matrice de tipul (m,n). S se calculeze raportul dintre cel mai mic element i cel
mai mare element al matricei.
Aplicaia 5
S se calculeze suma elementelor unei matrici care aparin unui interval dat
(xinf<=a[i,j] && xsup>=a[i,j]).
Aplicaia 6
S se determine matricea transpus a unei matrice citit de la tastatur.
Aplicaia 7
Gsii greala din codul de mai jos i corectai-o astfel nct programul s calculeze
ceea ce trebuie.
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int n,i,j,suma=0;

Laborator vectori multidimensionali

Console.Write("n= ");
n = int.Parse(Console.ReadLine());
int[,] a = new int[n, n];
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
Console.Write("a["+i+","+j+"] = ", i, j);
a[i, j] = int.Parse(Console.ReadLine());
}
}
for (i = 0; i < n; i++)
{
for (j = n - 1 - i; j >=0; j--)
{
suma += a[i, j];
}
}
Console.WriteLine("Suma elementelor de pe diagonala secundara este:
" + suma);
Console.ReadKey();
}
}
}

Aplicaia 8
Se d o matrice de tip (m,n). Pentru fiecare linie s se scad din elementele sale
valoarea minim din linia respectiv.
Aplicaia 9
Se d o matrice de tip (m,n). S se mpart elementele fiecrei linii la media aritmetic
a elementelor pozitive din linia respectiv. Dac ntr-o linie nu exist elemente pozitive, linia
rmne neschimbat.
Aplicaia 10
Se citete o matrice cu m linii i n coloane. Se dau numerele reale x, y, z, cu x < y < z.
S se formeze matricea B cu m linii i n coloane, unde:

0 , daca a ij <

1 , daca x
a ij

bij =

2 , daca y a ij

3 , daca a ij

x
< y
< z
z.

Aplicaia 11
Fie o matrice de dimensiuni m x n reprezentnd profiturile nete obinute de m societi
ntr-o perioad de n ani. Afiai societile care au nregistrat profitul maxim pe ntreaga
perioad analizat.
Aplicaia 12
Se citete un numr natural n. S se construiasc i s se afieze o matrice cu n linii i n
4

ndrumar laborator Programarea calculatoarelor

coloane n care numerele de la 1 la n*n s fie aranjate n spiral ca n exemplul de mai jos.
n=4
1234
12 13 14 5
11 16 15 6
10 9 8 7
Aplicaia 13
S se realizeze un ptrat magic de ordin impar.
Indicaii. Prin ptrat magic se nelege o matrice ptrat de ordin n cu elementele {1, 2,
2
..., n } aezate astfel nct suma elementelor de pe fiecare linie, coloan sau diagonal este
aceeai.
Aplicaia 14
S se scrie o aplicaie care calculeaz suma i produsul a dou matrici de elemente
ntregi de forma (m,n) i (n,p).