2800 - Chenar 1

From Bitnami MediaWiki
Revision as of 12:40, 21 April 2023 by Andor Giulia (talk | contribs) (Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/2800/chenar1] == Cerință == 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 co...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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.