Sunteți pe pagina 1din 4

Seminar 9 – Probleme

1. Scrieti programul C care sa determine elementul maxim (minim) de pe fiecare coloana si a


elementului maxim (minim) dintr-o matrice dreptunghiulara de dimnesiune mxn.

2. Sa se scrie programul C care sorteaza elementele unei matrice A(mxn) in ordine crescatoare.

Indicatie
Se va apela la un artificiu de programare – copierea tuturor elementelor din matrice intr-un vector.
Acest vector este sortat si ulterior, elementele sortate sunt redistribuite in matrice.

Rezolvare
- Declarari:
INTREG n,m,i,j,k, l, a[10][10], c[10][10], v[100], aux;
SCRIE(“Nr. de linii si de coloane:”);
CITESTE (n,m) ;

- Citire matrice a[i][j]


- Afisare matrice a[i][j]
- Sortare
- afisare matrice c[i][j]

3. Sa se scrie programul C care verifica daca matricea A(nxn) este un patrat magic.
Matricea reprezinta un patrat magic daca sumele elementelor de pe fiecare linie sunt egale cu sumele
elementelor de pe fiecare coloana si de pe cele doua diagonale.
Exemplu:
2 7 6
9 5 1
4 3 8
Suma = 15.

4. Sa se realizeze programul C care realizeaza inmultirea dintre un vector si o matrice.


Indicatie.
Fie vectorul X=(x1,x2,...,xn) si matricea . Pentru a se putea efectua inmultirea dintre vectorul X si matricea A
este obligatoriu ca numarul de elemente ale vectorului X sa fie egal cu numarul de linii ale matricei A. Rezultatul
inmultirii este un vector Y=(y1,y2,...,yp).
Algoritmul este:
- formula de start: y(j)=0;
- formula recursiva: y(j)=y(j)+x(k)*a(k,j); k=1,n.
5. Sa se realizeze programul C pentru determinarea unei matrice la o putere data p>=0.
Indicatie:
- matricea A(mxn), matricea B initializata cu matricea unitate .
- Algoritmul pentru ridicarea matricei A la puterea p:

Algoritm:
- formula de start: B=E;
- formula recursiva: B=BxA

Deoarece matricele sunt date de tip structurat, operatia de inmultire nu se poate efectua ca in cazul datelor
numerice de tip simplu. De aceea se impune utilizarea unei matrice temporare C, care face ca formula recursiva
sa se scrie sub forma:
C=BxA si B=C.

6. Sa se scrie programul care realizeaza determinarea pozitiei primei aparitii a unei valori date intr-o matrice
dreptunghiulara A(mxn).

Indicatii
- Matricea se va parcurge lexicografic.
- Cand se identifica valoarea cautata se afiseaza pozitia (linia si coloana) si se abandoneaza parcurgerea
matricei. Iesirea fortata din structurile repetitive se realizeza cu ajutorul unei variabile care ia valoarea 1 daca
valoarea data a fost regasita printre elementele matrice sau 0 in caz contrar. Testarea suplimentara a variabilei,
alaturi de conditia de sfarsit de linii (i>m) si sfarsit de coloane (j>n), transforma structurile repetitive cu
numarator in doua structuri WHILE-DO imbricate.
- In final, daca variabila este egala cu 0, inseamna ca valoarea nu a fost regasita si se afiseaza un mesaj
corespunzator
Obs: In C, indicii pleaca de la 0.
Exemplu
Dati numarul de linii: 2
Dati numarul de coloane: 3

Dati elementele matricei:


a[1][1]=3
a[1][2]=2
a[1][3]=1
a[2][1]=5
a[2][2]=6
a[2][3]=8

Valoarea cautata este: 2

3 2 1
5 6 8
Valoarea cautata se afla pe linia 0 si coloana 1

Rezolvare
INTREG n,m,i,j,pozl, pozc, gas, val, a[100][100]; { j=0;
SCRIE(“Nr. de linii si de coloane:”); WHILE ((j<n) && (!gas)) DO
CITESTE (m,n) ; { IF (a[i][j]= =val) THEN

//citire matrice { gas = 1;


DO-FOR i = 0,m-1,1
DO-FOR j=0,n-1,1 pozl = i;
CITESTE (a[i][j]) ;
ENDDO ; pozc = j;
ENDDO ;
}
CITESTE (val); ENDIF;
j=j+1;
//afisare matrice }
DO-FOR i = 0,m-1,1 ENDWHILE;
DO-FOR j=0,n-1,1 i=i+1;
SCRIE (a[i][j]) ; }
ENDDO ; ENDWHILE;
ENDDO ;
IF (gas) THEN SCRIE (“Val. cautata se afla pe linia si
//identificare valoare coloana:”, pozl,pozc);
gas=0; ENDIF;
i=0;
WHILE ((i<m) &&(!gas)) DO STOP.

7. Fie o matrice de dimensiuni mxn, reprezentand consumurile de energie pentru fabricarea a m produse intr-
o perioada de n zile. Sa se scrie programul C care afiseaza produsele care au inregistrat consumuri constante
pe intreaga perioada.

Exemplu
Dati nr. de produse (linii):3
Dati nr. de zile (coloane):3
Dati elementele primei matrice:
mat[0][0]=1
mat[0][1]=2
mat[0][2]=3
mat[1][0]=4
mat[1][1]=4
mat[1][2]=4
mat[2][0]=8
mat[2][1]=8
mat[2][2]=8

mat[0][0]=1 mat[0][1]=2 mat[0][2]=3


mat[1][0]=4 mat[1][1]=4 mat[1][2]=4
mat[2][0]=8 mat[2][1]=8 mat[2][2]=8

Produsele care au inregistrat consumuri constante sunt: 2 3

Indicatie:
- se verifica ipoteza că toate consumurile inregistrate in cele n zile pentru acelasi produs sunt egale cu
valoarea inregistrata in prima zi de consum. Produsele care respecta ipoteza sunt copiate intr-un vector. La final
acest vector este afisat pe ecran.

- bliblioteci: stdio.h, conio.h.


- in main:
- declaratii variabile intregi: mat[10][10],i, j, n , m , ct[10], l;
- date de intrare: nr de produse (linii) - m, nr. de zile (coloane) – n, elementele matrice mat
- afisarea matricei mat
- algoritm de calcul
- afisare rezultat

8. Scrieti programul C care sorteaza descrescator liniile unei matrice.


9. Scrieti programul C care sorteaza descrescator coloanele unei matrice.
10. Calculati transpusa unei matrice (de ordin nxn si de ordin mxn).
11. Scrieti programul C care calculeaza produsul scalar si vectorial dintre diagonalele unei matrice patratice.

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