2841 - Gen Mat 27: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: ==Cerința== Scrieţi un program care citește de la tastatură două numere naturale, m și n (2 ≤ m ≤ 20, 2 ≤ n ≤ 20), și construiește în memorie un tablou bidimensional A, cu m linii și n coloane, astfel încât parcurgându-l, linie cu linie, de sus în jos și fiecare linie de la stânga la dreapta, să se obțină șirul primelor n·m numere naturale, pare, care nu sunt divizibile cu 5, ordonat strict crescător. Programul afişează pe ecran tabloul obținu...
 
No edit summary
 
Line 24: Line 24:
:Datele de intrare nu corespund restricțiilor impuse.
:Datele de intrare nu corespund restricțiilor impuse.
==Rezolvare==
==Rezolvare==
<syntaxhighlight lang="python" line="">
<syntaxhighlight lang="python" line="1">
#2841 - Gen Mat 27
#2841 - Gen Mat 27
# definim functia care returneaza daca un numar este par si nu este multiplu de 5
def numar_valid(num):
def numar_valid(num):
     return num % 2 == 0 and num % 5 != 0
     return num % 2 == 0 and num % 5 != 0


# definim functia matrice care construieste o matrice de m linii si n coloane 
def matrice(m, n):
def matrice(m, n):
     A = []
     A = [] # initializam lista goala A care va contine randurile matricei
     numar_curent = 2
     numar_curent = 2 # incepem de la 2, primul numar valid
     for i in range(m):
     for i in range(m): # parcurgem liniile matricei
         rand = []
         rand = [] # initializam lista goala
         for j in range(n):
         for j in range(n): # parcurgem coloanele matricei
             while not numar_valid(numar_curent):
             while not numar_valid(numar_curent): # cautam primul numar valid, daca nu gasim, il cautam pe urmatorul
                 numar_curent += 1
                 numar_curent += 1
             rand.append(numar_curent)
             rand.append(numar_curent) # adaugam numarul valid gasit in randul curent
             numar_curent += 1
             numar_curent += 1 # trecem la urmatorul numar pentru a-l valida si a adauga in randul curent
         A.append(rand)
         A.append(rand) # adaugam randul curent in matricea finala A
     return A
     return A


Line 45: Line 47:
     m = int(input("Introduceți numărul de linii: "))
     m = int(input("Introduceți numărul de linii: "))
     n = int(input("Introduceți numărul de coloane: "))
     n = int(input("Introduceți numărul de coloane: "))
     if m < 2 or m > 20 or n < 2 or n > 20:
     if m < 2 or m > 20 or n < 2 or n > 20: # verificam restrictiile
         print("Datele de intrare nu corespund restricțiilor impuse.")
         print("Datele de intrare nu corespund restricțiilor impuse.")
     else:
     else:
         print("Datele de intrare corespund restricțiilor impuse.")
         print("Datele de intrare corespund restricțiilor impuse.")
         A = matrice(m, n)
         A = matrice(m, n) # generam matricea conform dimensiunilor introduse
         for rand in A:
         for rand in A: # afisam matricea linie cu linie
             print(" ".join(str(x) for x in rand))
             print(" ".join(str(x) for x in rand))
   
</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 21:28, 28 April 2023

Cerința[edit | edit source]

Scrieţi un program care citește de la tastatură două numere naturale, m și n (2 ≤ m ≤ 20, 2 ≤ n ≤ 20), și construiește în memorie un tablou bidimensional A, cu m linii și n coloane, astfel încât parcurgându-l, linie cu linie, de sus în jos și fiecare linie de la stânga la dreapta, să se obțină șirul primelor n·m numere naturale, pare, care nu sunt divizibile cu 5, ordonat strict crescător. Programul afişează pe ecran tabloul obținut, fiecare linie a tabloului pe câte o linie a ecranului, elementele de pe aceeași linie fiind separate prin câte un spațiu.

Date de intrare[edit | edit source]

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

Date de ieșire[edit | edit source]

Programul afișează pe ecran tabloul 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.

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

  • 2 ≤ m, n ≤ 20

Exemplul 1[edit | edit source]

Intrare
4 3
Ieșire
Datele de intrare corespund restricțiilor impuse.
2 4 6
8 12 14
16 18 22
24 26 28

Exemplul 2[edit | edit source]

Intrare
0 21
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare[edit | edit source]

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

  1. 2841 - Gen Mat 27
  2. definim functia care returneaza daca un numar este par si nu este multiplu de 5

def numar_valid(num):

   return num % 2 == 0 and num % 5 != 0
  1. definim functia matrice care construieste o matrice de m linii si n coloane

def matrice(m, n):

   A = [] # initializam lista goala A care va contine randurile matricei
   numar_curent = 2 # incepem de la 2, primul numar valid
   for i in range(m): # parcurgem liniile matricei
       rand = [] # initializam lista goala
       for j in range(n): # parcurgem coloanele matricei
           while not numar_valid(numar_curent): # cautam primul numar valid, daca nu gasim, il cautam pe urmatorul
               numar_curent += 1
           rand.append(numar_curent) # adaugam numarul valid gasit in randul curent
           numar_curent += 1 # trecem la urmatorul numar pentru a-l valida si a adauga in randul curent
       A.append(rand) # adaugam randul curent in matricea finala A
   return A

if __name__ == "__main__":

   m = int(input("Introduceți numărul de linii: "))
   n = int(input("Introduceți numărul de coloane: "))
   if m < 2 or m > 20 or n < 2 or n > 20: # verificam restrictiile
       print("Datele de intrare nu corespund restricțiilor impuse.")
   else:
       print("Datele de intrare corespund restricțiilor impuse.")
       A = matrice(m, n) # generam matricea conform dimensiunilor introduse
       for rand in A: # afisam matricea linie cu linie
           print(" ".join(str(x) for x in rand))

</syntaxhighlight>