Sunteți pe pagina 1din 4

Laborator 3

Tablouri

4.1. Declararea Tablourilor n Java


Tablourile sunt obiecte ce conin colecii de elemente de acelai tip. Referirea la
componentele unui tablou se face prin indici numerici 0 .. n-1 unde n este
numarul total de elemente.
In Java tablourile sunt considerate obiecte. Tablourile de mai multi indici se obin
prin compunerea de tablouri.
Exista dou sintaxe de declarare:

Pentru tablouri bidimensioanale:

tip variabila_tablou[];
tip[] variabila_tablou;

tip variabila_tablou[] [];

Se observ ca nu se declar nici o dimensiune prealabil a tabloului ntre


paranteze.
Alocarea unui tablou se poate face prin operatorul new, asa cum se creaz un
obiect:
tip variabila_tablou[] = new tip[numar_elemente]
int t[] = new int [5] ; // t este o referin la un tablou de 5 ntregi
Elementele tabloului se pot iniializa direct sau cu valoarea unor expresii:
tip variabila_tablou[] = { el1, el2, eln};
int t[]={32, 25, -12, 0, 5} ;
int t[]={1, n, n+p, 2*p, 12} ;// unde n, p de tip int;
Obs : Primul element al tabloului are indicele 0 deci n exemplul anterior t[0]=1 ;
Dimensiunea unui tablou se poate afla prin intermediul atributului length:
l = variabila_tablou.length
4.2. Accesul Tablourilor n Java
Se poate face in dou moduri :
a) Accesul individual la fiecare element al tabloului
b) Accesul global la ntregul tablou

a) Accesul individual :
t[0]= 15 ;
.
t[2]++ ;

System.out.print(t[4]) ;
b) Accesul global se face utiliznd dimensiunea unui tablou. Un exemplu de
acces global este operaia de citire/afiare
Citirea unui vector :
int t[] = new int[10] ;
for (i=0 ; i<t.lenght ; i++)
{ System.out.println ("dati elementul " + i + " : " ) ;
t[i] = Integer.parseInt(fluxIntrare.readLine());
}
Afiarea unui vector :
for (int i=0 ; i<t.length ; i++)
System.out.print (t[i] + " ");
Pentru tablouri iruri de caractere:
char tc[]
System.out.print (tc + " ");
Obs: Java nu suport tablouri dinamice (dimensiunea unui tablou este fix !).
Sarcina 1 : Scriei un program care citete si afieaz elementele unui vector de
numere ntregi.
Sarcina 2 :
Compilati i rulai programul urmtor care nmulete dou matrici generate
aleator
public class Tablouri {
/**
* Clasa Tablouri - inmultirea de matrici bidimensionale DIM*DIM
*
*/
static final int DIM = 3;
public static void afisMat ( int m[][], String numeMat) {
int i, j;

System.out.println("Matricea "+numeMat);
for ( i=0; i<m.length; i++) {
for ( j=0 ; j<m[i].length; j++)
System.out.print(m[i][j]+" ");
System.out.println("");
}}
public static void genereazaElMat( int m[][] ) {
int i, j;
for ( i=0; i<m.length; i++)
for ( j=0 ; j<m[i].length; j++)
m[i][j]=(int)(10*Math.random());
}
public static int[][] inmultesteMat( int a[][], int b[][]) {
int i, j, k, dim;
int c[][] = new int[a.length][b[0].length];
if(a[0].length!=b.length) { // daca nr col a lui a != nr lin a lui b
System.out.println("Matricile nu pot fi inmultite");
return c;
}
else
dim = a[0].length;
for ( i=0; i<a.length; i++)
for ( j=0 ; j<b[i].length; j++) {
c[i][j] = 0;
for( k=0; k<dim; k++)
c[i][j] += a[i][k] * b[k][j];
}
return c;
}
public static void main(String args[]) {
int a[][] = new int[DIM][DIM];
int b[][] = new int[DIM][DIM];
int c[][] = new int[DIM][DIM];
// generare matrici
genereazaElMat(a);
afisMat(a,"A");
genereazaElMat(b);
afisMat(b,"B");
// inmultire matrici C= A x B
c = inmultesteMat( a, b );
afisMat(c,"C = A x B");
}
}

Sarcina 3 : Modificai programul anterior astfel nct elementele matricilor A i B


s fie citite de la tastatur.
Sarcina 4 : Citii de la tastatura datele a n persoane (nume, prenume, vrsta) i
afiai-le pe ecran

Sarcina 5 : Scriei un program care citete un tablou de 10 numere, le sorteaz


descrescator i apoi le afieaz sortate.

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