0208 - Gen Mat 3
Cerința
Scrieţi un program care citeşte de la tastatură două numere naturale nenule n şi m şi construieşte în memorie o matrice cu n linii şi m coloane astfel încât, parcurgând tabloul linie cu linie de sus în jos şi fiecare linie de la stânga la dreapta, să se obţină şirul primelor n*m pătrate perfecte impare , ordonat strict crescător.
Date de intrare
Programul citește de la tastatură numerele n şi m.
Date de ieșire
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
- 2≤n,m≤20
Exemplu 1
- Intrare
- 2 3
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 1 9 25
- 49 81 121
Exemplu 2
- Intrare
- 1 0
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare
<syntaxhighlight lang="python" line="1">
- 0208 - Gen Mat 3
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 genmat3(n, m): # functia de rezolvare a problemei
matrice = [] for i in range(1, n + 1): # creem o matrice nu c linii si m coloane linie = [] for j in range(1, m + 1): linie.append(0)
matrice.append(linie)
valoare = 1 # valoare reprezinta elementul ce va fi introdus in matrice
# 1 e primul numar impar deci cu el incepem
for linia in range(1, n + 1): # matricea in problema incepe cu 1 deci trebuie sa aplicam + 1 la range for coloana in range(1, m + 1): matrice[linia - 1][coloana - 1] = valoare * valoare # introducem patratul valorii valoare += 2 # valoare va primi urmatorul numar impar
for linie in matrice: # afisarea for element in linie: print(element, end=" ") print()
if __name__ == '__main__':
# ne asteptam ca datele de intrare sa fie gresite fapt care ar genera o eroare de tipul ValueError # pe care o tratam corespunzator try: nr_linii = int(input("Introduceti numarul de linii: ")) # citirea nr_coloane = int(input("Introduceti numarul de coloane: "))
if verificare_restrictii(nr_linii, nr_coloane): # verificarea restrictiilor print("Datele de intrare corespund restrictiilor impuse.") genmat3(nr_linii, nr_coloane) # apelul functiei de rezolvare else: print("Datele de intrare nu corespund restrictiilor impuse.") except ValueError: print("Datele de intrare nu corespund restrictiilor impuse.")
</syntaxhighlight>