2800 - Chenar 1
Sursă: [1]
Cerință[edit | edit source]
Scrieți un program care citește de la tastatură două numere naturale din intervalul [3,50], n și m, și elementele unui tablou bidimensional cu n linii și m coloane, numere naturale din intervalul [0,104]. Programul modifică în memorie tabloul dat, atribuind valoarea elementului aflat pe ultima linie și pe ultima coloană a tabloului fiecărui element aflat pe conturul acestuia (pe prima linie, ultima linie, prima coloană, ultima coloană), apoi afișează pe ecran tabloul modificat, câte o linie a tabloului pe câte o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spațiu.
Date de intrare[edit | edit source]
Programul citește de la tastatură numerele n m, iar apoi cele n • m elemente ale tabloului.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.". Programul va afișa pe ecran elementele tabloului modificat, conform cerinței. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".
Restricții și precizări[edit | edit source]
- 3 ≤ n,m ≤ 50
- lementele tabloului aparțin intervalului [0,104]
Exemple[edit | edit source]
Exemplu 1[edit | edit source]
- Date de intrare
- 5 4
- 0 5 2 11
- 3 2 10 2
- 3 1 4
- 4 5 0 12
- 8 13 7 5
- Date de ieșire
- 5 5 5 5
- 5 2 10 5
- 5 3 1 5
- 5 5 0 5
- 5 5 5 5
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1"> def citire_lin_col():
try: lin = int(input("Introduceti numarul de linii: ")) col = int(input("Introduceti numarul de coloane: ")) if 3 <= lin <= 50 and 3 <= col <= 50: print("Datele sunt corecte.") return lin, col else: print("Datele nu sunt conform restricțiilor impuse.") exit() except ValueError: print("Trebuie introduse doar numere intregi.") exit()
def citeste_valori_matrice(lin, col):
matrice = [] for linie in range(lin): matrice.append([]) for coloana in range(col): while True: try: n = int(input("Introduceti un numar: ")) if 0 <= n <= 10000: print("Datele sunt corecte.") matrice[linie].append(n) break else: print("Datele nu sunt conform restricțiilor impuse.") except ValueError: print("Trebuie introduse doar numere intregi.") return matrice
def Chenar1(matrice, n, m):
val = matrice[-1][-1] for i in range(n): matrice[i][0] = val matrice[i][-1] = val for i in range(m): matrice[0][i] = val matrice[-1][i] = val
for i in range(n): for j in range(m): print(matrice[i][j], end=' ') print()
if _name_ == "_main_":
n, m = citire_lin_col() matrice = citeste_valori_matrice(n, m) Chenar1(matrice, n, m)
</syntaxhighlight>
Explicatii[edit | edit source]
Acest cod este o implementare în Python a problemei "Chenar 1" care solicită să se înlocuiască cu o valoare fixă elementele din marginile unei matrice, unde această valoare este preluată din celula din colțul din dreapta jos.
Programul este structurat în trei funcții:
citire_lin_col() - citește de la tastatură numărul de linii și coloane ale matricei și validează dacă respectă condițiile problemei; dacă da, returnează aceste valori ca tuple, altfel iese din program cu o eroare.
citeste_valori_matrice(lin, col) - citește de la tastatură valorile matricei, verificând în timpul citirii dacă sunt conforme cerinței problemei; matricea este stocată într-o listă de liste și returnată. Chenar1(matrice, n, m) - primește ca parametri matricea și dimensiunile acesteia și înlocuiește elementele din margini cu valoarea preluată din celula din colțul din dreapta jos; apoi afișează matricea. În funcția principală (if _name_ == "_main_":) se apelează cele trei funcții în ordine pentru a obține și afișa matricea cu valorile din margini înlocuite.