0228 - Gen Mat 15: Difference between revisions
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">
- 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>