Differences

This shows you the differences between two versions of the page.

Link to this comparison view

programare:laboratoare:lab06 [2018/11/05 14:38]
george.pirtoaca [Matrice. Operaţii cu matrice: adunare, înmulţire. Reprezentarea în memorie.]
programare:laboratoare:lab06 [2021/10/24 14:14] (current)
andrei.traistaru99 [Exerciţii de Laborator]
Line 1: Line 1:
 ===== Matrice. Operaţii cu matrice: adunare, înmulţire. Reprezentarea în memorie. ===== ===== Matrice. Operaţii cu matrice: adunare, înmulţire. Reprezentarea în memorie. =====
  
-**Responsabil:** [[andrei.parvu@cti.pub.ro|Andrei Pârvu]] ​+**Responsabili:*
 +  * [[neatudarius@gmail.com|Darius Neațu (CA 2019-2020)]] 
 +  * [[ion_dorinel.filip@cti.pub.ro|Dorinel Filip (CA 2019-2020)]] 
 +  ​* [[andrei.parvu@cti.pub.ro|Andrei Pârvu]] ​
  
 [[https://​docs.google.com/​document/​d/​16GNacxqmnRjaBx7w8tt9rRprbpiOjx8njzIrv4Q0mI0/​edit?​usp=sharing|Probleme]] [[https://​docs.google.com/​document/​d/​16GNacxqmnRjaBx7w8tt9rRprbpiOjx8njzIrv4Q0mI0/​edit?​usp=sharing|Probleme]]
Line 292: Line 295:
 **Următoarele două probleme vă vor fi date de asistent în cadrul laboratorului.** **Următoarele două probleme vă vor fi date de asistent în cadrul laboratorului.**
  
-[[https://​drive.google.com/​drive/u/1/folders/​1qB6EZLGVubKbuTXMtMue06egH_8fo25M|Checker laborator 6]]+[[https://​drive.google.com/​file/d/1u5l6ouDLRZ5WGrG8YV-iHYXqo3S6aRu9/view?​usp=sharing|Checker laborator 6]]
 [[ https://​ocw.cs.pub.ro/​courses/​programare/​checker | Tutorial folosire checker laborator ]] [[ https://​ocw.cs.pub.ro/​courses/​programare/​checker | Tutorial folosire checker laborator ]]
  
-[[https://​drive.google.com/​open?​id=0B0KdZmf314eIdzQtWlM0VURmUTg | Teste problema 1]] 
  
-[[https://​drive.google.com/​open?​id=0B0KdZmf314eIdjV4VDlhUGZFdEE | Teste problema 2]] 
  
  
Line 391: Line 392:
  
 ===== Exerciţii de Laborator ===== ===== Exerciţii de Laborator =====
 +  * **Exercitiul 1 [2 pct]:** Citiți de la tastatură o matrice (puteți hardcoda dimensiunea maximă a matricei). Afișați matricea transpusă.
 +<​code>​
 +Exemplu:
  
-  - Scrieţi un program pentru înmulţirea a două matrice, dacă aceasta este posibilă. Va trebui să implementaţi două funcţii:\\ +Input 4 // număr de linii urmat de număr ​de coloane din matrice 
-    * [1p] una pentru citirea unei matrice într-un tablou bidimensional,​ dat ca parametru. +                1 2 3 4 
-    * [2.5p] una care să realizeze efectiv înmulţirea a două matrice. + 5 6 7 8
-  - [1.5p] Scrieţi un program care ridică o matrice patratică cu n linii şi n coloane la puterea p, cu p număr ​întreg pozitiv. +
-  - [2p] Scrieți un program care citeste o matrice ​si indicele unei coloane a acesteia și afișează cele două diagonale care pornesc de pe linia 0 și indicele coloanei respective. Valorile elementelor aflate pe diagonale vor fi inlocuite cu 0.\\ Exemplu: <​code>​ +
-3 4 1 +
-1 2 3 4 +
-3 4 +
-6 7 8 9+
  
-3 4 +Output:
-3 4 0 6 + 2 6 
-6 7 8 0+
 + 8 
 +</​code>​ 
 +  * **Exercitiul 2 [2 pct]:** Citiți de la tastatură 2 matrice (puteți hardcoda dimensiunea maximă a matricelor) – prima matrice numită în continuare A, iar a doua B. Determinați dacă este posibilă operația de înmulțire de matrice folosind drept operanzi cele două matrice. Determinați toate rezultatele posibile și afișati-le la consolă, precizând ordinea în care s-au înmulțit operanzii. Dacă nu se poate efectua nicio operație de înmulțire,​ afișați mesajul „Nu se poate efectua operatia de inmultire cu aceste matrice!”. 
 +<​code>​ 
 +Exemplu: 
 + 
 +Input: 2 2 // număr de linii urmat de număr de coloane din matricea A 
 +                1 2 
 + 3 4 
 + 2 2 // număr de linii urmat de număr de coloane din matricea B 
 +                5 6 
 + 7 8 
 + 
 +Output: A * B 
 + 19 22 
 + 43 50
  
-1 0 3 4 + B * A 
-0 4 5 6 + 23 34 
-6 7 8 9+ 31 46
 </​code>​ </​code>​
-  ​[3pFie două matrice ​$A$ si $B$Să se afișeze toate perechile $(A', B')$, unde $A'$ este submatrice a lui $A$ și $B'$ este submatrice a lui $B$în care suma elementelor din $A'$ este egală cu suma elementelor din $B'$Submatricele $A'$ si $B'$ trebuie să aibă cel puțin 2 linii și 2 coloane.\\ Exemplu: ​<​code>​ +  ​* **Exercitiul 3 [2 pct]:** Folosind logica funcției implementată anterior, implementați operația de ridicare la putere a unei matrice. ​Citiți de la consolă matricearespective puterea la care trebuie ridicată matriceaAfișați la consolă rezultatul obținut sau mesajul “Operatie invalida” ​in caz contrar. 
-3 4 // matricea A +<​code>​ 
-3 2 +Exemplul ​1:
-6 5 2 3 +
-5 3 2 1 +
-4 3 // matricea B +
-2 3 3 +
-4 1 2 +
-5 3 2 +
-2 7 6+
  
-// Rezultat sub forma (linie stanga sus, coloana stanga sus, linie dreapta jos, coloana dreapta jos) +Input: 2 2 // număr de linii urmat de număr de coloane din matrice 
-(0, 0, 1, 3), (0, 0, 2, 2) +                1 2 
-(0, 0, 1, 3), (2, 0, 3, 2) + 4 
-(0, 1, 1, 2), (0, 0, 1, 1) + 3 // puterea la care trebuie ridicată matricea anterioară
-(0, 1, 2, 2), (0, 0, 1, 2) +
-(0, 1, 2, 3), (1, 0, 3, 1) +
-(0, 2, 1, 3), (0, 1, 1, 2) +
-(1, 0, 2, 3), (0, 0, 3, 1) +
-(1, 0, 2, 3), (0, 1, 3, 2) +
-(1, 2, 2, 3), (1, 1, 2, 2)+
  
 +Output: 37 54
 + 81 118
 +
 +Exemplul 2:
 +
 +Input: 2 3 // număr de linii urmat de număr de coloane din matrice
 +                1 2 3
 + 4 5 6
 + 3 // puterea la care trebuie ridicată matricea anterioară
 +
 +Output: Operatie invalida
 </​code>​ </​code>​
-BONUS: +  * **Exercitiul 4 [2 pct]:** Citiți ​o matrice ​pătratică ​de la tastatură. Intersecția diagonalelor matriceiformează 4 zone „triunghiulare” în matriceImplementați o funcție care primește ca parametru o matrice pătratică și dimensiunea laturii acesteia și afișează elementele aflate în triunghiul superior. 
-  - [2pDându-se ​o matrice ​$A$ de dimensiune $N * M$ să se sorteze diagonalele acesteiautilizând un algoritm de bubble-sort\\ Exemplu: ​<​code>​ +<​code>​ 
-4 3 +Exemplul 1: 
-5 6 3 + 
-3 4 5 +Input: 4 // dimensiunea laturii matricei 
-2 7 4 +                1 2 4 
-5 1 1+ 5 6 7 8 
 + 9 0 1 2 
 + 4 5 6 
 + 
 +Output: 1 2 
 + 6 7 
 + 
 + 
 + 
 + 
 + 
 + 
 +Exemplul 2: 
 + 
 +Input: 3 // dimensiunea laturii matricei 
 +                1 2 3 
 + 4 5 6 
 + 7 8 9 
 + 
 +Output: 1 
 +
 +</​code>​ 
 +  * **Exercitiul 5 [2 pct]:** Se citesc două matrice de la tastatură. Verificați dacă a doua matrice este submatrice a primei matrice. 
 +<​code>​ 
 +Exemplul 1: 
 + 
 +Input: 2 2 // număr de linii urmat de număr de coloane din matricea A 
 +                1 2 
 + 3 4 
 + 
 + 2 2 // număr de linii urmat de număr de coloane din matricea B 
 +                5 6 
 +
 + 
 +Output: Fals 
 + 
 +Exemplul 2: 
 + 
 +Input: 2 2 // număr de linii urmat de număr de coloane din matricea A 
 +                1 2 
 +
 + 
 + 3 3 // număr de linii urmat de număr de coloane din matricea B 
 +                ​6 4 
 + 2 5 
 + 3 4 6 
 + 
 +Output: Adevarat 
 +</​code>​ 
 +  * **Bonus [2 pct]:** CSe citește o matrice A de la tastatură. Afișați la consolă o matrice B cu proprietatea că B[i][j] = max(A[0..i][0..j]),​ unde max(A[0..i][0..j]) înseamnă elementul maxim din submatricea A care are colțul stânga – sus în A[0][0] și colțul dreapta – jos în A[i][j]. 
 +<​code>​ 
 +Exemplu: 
 + 
 +Input: 3 4 // număr de linii urmat de număr de coloane din matricea A 
 +                ​2 5 2  
 + 6 3 9 8 
 + 4 0 4 5 
 + 
 +Output: 1 2 5 5 
 + 6 6 9 9 
 + 6 6 9 9
  
-// Rezultat 
-4 5 3 
-1 4 6 
-1 3 5 
-5 2 7 
 </​code>​ </​code>​
 <​hidden>​ <​hidden>​
 ===== Soluții ===== ===== Soluții =====
-{{:​programare:​laboratoare:​6-solutions.zip|}}+
 </​hidden>​ </​hidden>​
 +
 +===== Referinţe =====
 +  * [[https://​github.com/​cs-pub-ro/​ComputerProgramming/​blob/​master/​Laboratories/​Lab6/​Lab6.pdf | Cheatsheet matrici]]
 +
programare/laboratoare/lab06.1541421508.txt.gz · Last modified: 2018/11/05 14:38 by george.pirtoaca
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0