1585 - Gen Mat 23: Difference between revisions
Pagină nouă: == Cerința == 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 == Programul citește de la tastatură numărul n. == Date de ieșir... |
|||
(2 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
Programul citește de la tastatură numărul n. | Programul citește de la tastatură numărul n. | ||
== Date de ieșire == | == 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 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 == | == Restricții și precizări == | ||
1 ≤ n ≤ 30 | 1 ≤ n ≤ 30 | ||
Line 26: | Line 27: | ||
<br> | <br> | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line="1"> | ||
#1585 Gen Mat 23 | # 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> |
Latest revision as of 18:17, 29 April 2023
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>