1585 - Gen Mat 23
Cerința[edit | edit source]
Scrieţi un program care citeşte de la tastatură un număr natural n şi construieşte o matrice pătratică având n linii şi n coloane, cu elemente 0 şi 1, dispuse în pătrate concentrice, fiecare pătrat fiind format doar din valori 1 sau doar din valori 0, ca în exemplul de mai jos, astfel încât elementul aflat pe prima linie şi prima coloană să fie egal cu 1.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n.
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 o linie a ecranului, cu un spaţiu între elementele fiecărei linii. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse".
Restricții și precizări[edit | edit source]
1 ≤ n ≤ 30
Exemplu 1[edit | edit source]
- Intrare
- 6
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 1 1 1 1 1 1
- 1 0 0 0 0 1
- 1 0 1 1 0 1
- 1 0 1 1 0 1
- 1 0 0 0 0 1
- 1 1 1 1 1 1
Exemplu 2[edit | edit source]
- Intrare
- 66
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1">
- 1585 Gen Mat 23
def verificare_restrictii(nr_linii): # functia de verificare a restrictiilor
if 1 <= nr_linii <= 30: return True else: return False
def genmat23(nr_linii):
matrice = []
for i in range(0, nr_linii): # crearea matricii patratice linie = [] for j in range(0, nr_linii): linie.append(0) matrice.append(linie)
i = 0 # i reprezinta startul unui chenar de 1 iar nr_linii - 1 va fi astfel sfarsitul acelui chenar while i < nr_linii-i: if i % 2 == 0: # numarand de la 0, 1 va fi introdus pe liniile 0, 2 ,4 etc adica pe linii si coloane pare for linie in range(i, nr_linii-i): # completam doar marginile cu 1 if linie == i or linie == nr_linii - 1: # prima si ultima linie for coloana in range(i, nr_linii-i): matrice[linie][coloana] = 1 else: # prima si ultima coloana matrice[linie][i] = 1 matrice[linie][nr_linii-i-1] = 1
i += 1 # trecem la urmatorul chenar
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: numar_linii = int(input("Introduceti numarul n ")) # citirea numarului de linii if verificare_restrictii(numar_linii): # veridicarea restrictiilor print("Datele de intrare corespund restrictiilor impuse.") genmat23(numar_linii) # apelul functiei de rezolvare else: print("Datele de intrare nu corespund restrictiilor impuse.") except ValueError: print("Datele de intrare nu corespund restrictiilor impuse.")
</syntaxhighlight>