0206 - Gen Mat 1

From Bitnami MediaWiki

Context cerință[edit | edit source]

Scrieţi un program care citeşte de la tastatură două numere naturale nenule n şi m şi care construieşte în memorie şi apoi afişează o matrice A cu n linii (numerotate de la 1 la n) şi m coloane (numerotate de la 1 la m) cu proprietatea că fiecare element Aij memorează cea mai mică dintre valorile indicilor i şi j ( 1≤i≤n, 1≤j≤m ).

Date de intrare[edit | edit source]

Programul citește de la tastatură numerele n şi m

Date de ieşire[edit | edit source]

Dacă datele sunt introduse corect, pe ecran se va afișa: " Datele de intrare corespund restrictiilor impuse", apoi pe un rand nou va afișa matricea construită, câte o linie a matricei pe câte o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spaţiu. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse".

Restricții și precizări[edit | edit source]

  • 2≤m≤20 , 2≤n≤20

Exemplu[edit | edit source]

Intrare
4
5
Ieșire
Datele introduse corespund restricțiilor impuse.
1 1 1 1 1
1 2 2 2 2
1 2 3 3 3
1 2 3 4 4


Exemplu 2[edit | edit source]

Intrare
-1
-2
Ieșire
Datele de intrare nu corespund restricțiilor impuse.


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1">

  1. 0206-Gen Mat 1

def verificare_restrictii(n, m): # functia de verificare a datelor de intrare

   if 2 <= n <= 20 and 2 <= m <= 20:
       return True
   else:
       return False


def genmat1(n, m):

   matrice = []                # vom crea o matrice noua cu n linii si m coloane
   for i in range(n):
       linie = []
       for j in range(m):
           linie.append(0)
       matrice.append(linie)
   for i in range(1, n+1):     # in problema, numaratoarea incepe de la 1 deci aplicam + 1
       for j in range(1, m+1):
           matrice[i-1][j-1] = min(i, j)   # la crearea matricii alegem minimul dintre i si j
   for linie in matrice:       # afisarea matricii
       for element in linie:
           print(element, end=" ")
       print()


if __name__ == '__main__':

   try:
       nr_linii = int(input("Introduceti numarul de linii: "))     # citirea numarului de linii si coloane
       nr_coloane = int(input("Introduceti numarul de coloane: "))
       if verificare_restrictii(nr_linii, nr_coloane):             # verificam datele de intrare
           print("Datele de intrare corespund restrictiilor impuse.")
           genmat1(nr_linii, nr_coloane)                           # apelam functia de rezolvare
       else:
           print("Datele de intrare nu corespund restrictiilor impuse.")
   # ne asteptam la 2 tipuri de erori din cauza datelor de intrare, le tratam corespunzator
   except ValueError:
       print("Datele de intrare nu corespund restrictiilor impuse.")
   except IndexError:
       print("Datele de intrare nu corespund restrictiilor impuse.")

</syntaxhighlight>