0228 - Gen Mat 15: Difference between revisions

From Bitnami MediaWiki
 
Line 30: Line 30:
<br>
<br>
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line="1">
# 0228 Gen Mat 15
# 0228 Gen Mat 15


def validare(nr_linii, nr_coloane):
def validare(nr_linii, nr_coloane):     # functia de validare a datelor de intrare
     if nr_linii < 3 or nr_linii > 15 or nr_coloane < 3 or nr_coloane > 15:
     if nr_linii < 3 or nr_linii > 15 or nr_coloane < 3 or nr_coloane > 15:
         raise ValueError
         raise ValueError
Line 41: Line 41:


def gen_mat_15(nr_linii, nr_coloane):
def gen_mat_15(nr_linii, nr_coloane):
     matrice = [[0 for _ in range(nr_coloane)] for _ in range(nr_linii)]
     matrice = [[0 for _ in range(nr_coloane)] for _ in range(nr_linii)]     # initializarea matricii


     valoare = 1
     valoare = 1            # prima valoare introdusa e 1


     for index_linie in range(nr_linii):
     for index_linie in range(nr_linii):
         if index_linie % 2 == 0:
         if index_linie % 2 == 0:                       # daca linia e para, parcurgem coloanele de la stanga la dreapta
             for index_coloana in range(nr_coloane):
             for index_coloana in range(nr_coloane):
                 matrice[index_linie][index_coloana] = valoare
                 matrice[index_linie][index_coloana] = valoare
                 valoare += 1
                 valoare += 1
         else:
         else:                                           # altfel, parcurgem de la dreapta la stanga
             for index_coloana in range(nr_coloane - 1, -1, -1):
             for index_coloana in range(nr_coloane - 1, -1, -1):
                 matrice[index_linie][index_coloana] = valoare
                 matrice[index_linie][index_coloana] = valoare
                 valoare += 1
                 valoare += 1


     for index_linie in range(nr_linii):
     for index_linie in range(nr_linii):                 # afisarea
         for index_coloana in range(nr_coloane):
         for index_coloana in range(nr_coloane):
             print(matrice[index_linie][index_coloana], end=" ")
             print(matrice[index_linie][index_coloana], end=" ")
Line 63: Line 63:
if __name__ == '__main__':
if __name__ == '__main__':
     try:
     try:
         n = int(input("Introduceți n: "))
         n = int(input("Introduceți n: "))           # citirea lui n si m
         m = int(input("Introdeceți m: "))
         m = int(input("Introdeceți m: "))
         validare(n, m)
         validare(n, m)                             # validarea datelor de intrare
         gen_mat_15(n, m)
         gen_mat_15(n, m)                           # apelul functiei de rezolvare
     except ValueError:
     except ValueError:
         print("Datele de intrare nu corespund restrictiilor impuse")
         print("Datele de intrare nu corespund restrictiilor impuse")
       
</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 19:15, 29 April 2023

Cerința[edit | edit source]

Scrieţi un program care citeşte de la tastatură două numere naturale n şi m şi construieşte în memorie o matrice cu n linii şi m coloane care conţine numerele naturale de la 1 la m*n, dispuse astfel:

  • prima linie conţine numerele de la 1 la m, ordonate crescător;
  • a doua linie conţine numerele de la m+1 la 2*m, ordonate descrescător;
  • a treia linie conţine numerele de la 2*m+1 la 3*m, ordonate crescător;
  • a patra linie conţine numerele de la 3*m+1 la 4*m, ordonate descrescător;
  • etc.

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]

  • 3≤n,m≤15

Exemplu 1[edit | edit source]

Intrare
4 5
Ieșire
Datele introduse corespund restricțiilor impuse.
1 2 3 4 5
10 9 8 7 6
11 12 13 14 15
20 19 18 17 16


Exemplu 2[edit | edit source]

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


Rezolvare[edit | edit source]

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

  1. 0228 Gen Mat 15

def validare(nr_linii, nr_coloane): # functia de validare a datelor de intrare

   if nr_linii < 3 or nr_linii > 15 or nr_coloane < 3 or nr_coloane > 15:
       raise ValueError
   print("Datele de intrare corespund restrictiilor impuse")


def gen_mat_15(nr_linii, nr_coloane):

   matrice = [[0 for _ in range(nr_coloane)] for _ in range(nr_linii)]     # initializarea matricii
   valoare = 1             # prima valoare introdusa e 1
   for index_linie in range(nr_linii):
       if index_linie % 2 == 0:                        # daca linia e para, parcurgem coloanele de la stanga la dreapta
           for index_coloana in range(nr_coloane):
               matrice[index_linie][index_coloana] = valoare
               valoare += 1
       else:                                           # altfel, parcurgem de la dreapta la stanga
           for index_coloana in range(nr_coloane - 1, -1, -1):
               matrice[index_linie][index_coloana] = valoare
               valoare += 1
   for index_linie in range(nr_linii):                 # afisarea
       for index_coloana in range(nr_coloane):
           print(matrice[index_linie][index_coloana], end=" ")
       print()


if __name__ == '__main__':

   try:
       n = int(input("Introduceți n: "))           # citirea lui n si m
       m = int(input("Introdeceți m: "))
       validare(n, m)                              # validarea datelor de intrare
       gen_mat_15(n, m)                            # apelul functiei de rezolvare
   except ValueError:
       print("Datele de intrare nu corespund restrictiilor impuse")
       

</syntaxhighlight>