1585 - Gen Mat 23: Difference between revisions
No edit summary |
|||
(One intermediate revision 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): | def verificare_restrictii(nr_linii): # functia de verificare a restrictiilor | ||
if 1 <= nr_linii <= 30: | if 1 <= nr_linii <= 30: | ||
return True | return True | ||
Line 38: | Line 39: | ||
matrice = [] | matrice = [] | ||
for i in range(0, nr_linii): | for i in range(0, nr_linii): # crearea matricii patratice | ||
linie = [] | linie = [] | ||
for j in range(0, nr_linii): | for j in range(0, nr_linii): | ||
linie.append(0) | linie.append(0) | ||
matrice.append(linie) | matrice.append(linie) | ||
i = 0 | i = 0 # i reprezinta startul unui chenar de 1 iar nr_linii - 1 va fi astfel sfarsitul acelui chenar | ||
while i < nr_linii-i: | while i < nr_linii-i: | ||
if i % 2 == 0: | 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): | for linie in range(i, nr_linii-i): | ||
if linie == i or linie == nr_linii - 1: | # 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): | for coloana in range(i, nr_linii-i): | ||
matrice[linie][coloana] = 1 | matrice[linie][coloana] = 1 | ||
else: | else: # prima si ultima coloana | ||
matrice[linie][i] = 1 | matrice[linie][i] = 1 | ||
matrice[linie][nr_linii-i-1] = 1 | matrice[linie][nr_linii-i-1] = 1 | ||
i += 1 | i += 1 # trecem la urmatorul chenar | ||
for linie in matrice: | for linie in matrice: # afisarea | ||
for element in linie: | for element in linie: | ||
print(element, end=" ") | print(element, end=" ") | ||
Line 65: | Line 66: | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
numar_linii = int(input("Introduceti numarul n ")) | # 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.") | print("Datele de intrare nu corespund restrictiilor impuse.") | ||
</syntaxhighlight> | </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>