0208 - Gen Mat 3: Difference between revisions
explicatii |
|||
Line 25: | Line 25: | ||
<br> | <br> | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line="1"> | ||
def verificare_restrictii(n, m): | # 0208 - Gen Mat 3 | ||
def verificare_restrictii(n, m): # functia de verificare a datelor de intrare | |||
if 2 <= n <= 20 and 2 <= m <= 20: | if 2 <= n <= 20 and 2 <= m <= 20: | ||
return True | return True | ||
Line 33: | Line 34: | ||
def genmat3(n, m): | def genmat3(n, m): # functia de rezolvare a problemei | ||
matrice = [] | matrice = [] | ||
for i in range(1, n+1): | for i in range(1, n + 1): # creem o matrice nu c linii si m coloane | ||
linie = [] | linie = [] | ||
for j in range(1, m+1): | for j in range(1, m + 1): | ||
linie.append(0) | linie.append(0) | ||
matrice.append(linie) | matrice.append(linie) | ||
valoare = 1 | valoare = 1 # valoare reprezinta elementul ce va fi introdus in matrice | ||
for linia in range(1, n+1): | # 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): | for coloana in range(1, m + 1): | ||
matrice[linia-1][coloana-1] = valoare * valoare | matrice[linia - 1][coloana - 1] = valoare * valoare # introducem patratul valorii | ||
valoare += 2 | valoare += 2 # valoare va primi urmatorul numar impar | ||
for linie in matrice: | for linie in matrice: # afisarea | ||
for element in linie: | for element in linie: | ||
print(element, end=" ") | print(element, end=" ") | ||
Line 56: | Line 59: | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
nr_linii = int(input("Introduceti numarul de linii: ")) | # 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.") | print("Datele de intrare nu corespund restrictiilor impuse.") | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 18:02, 26 April 2023
Cerința[edit | edit source]
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[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≤n,m≤20
Exemplu 1[edit | edit source]
- Intrare
- 2 3
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 1 9 25
- 49 81 121
Exemplu 2[edit | edit source]
- Intrare
- 1 0
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<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>