2807 - Matrice 10: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Rezolvare == <syntaxhighlight lang="python" line="1"> # citim dimensiunile matricei n, m = map(int, input().split()) # citim elementele matricei matrix = [] for i in range(n): row = list(map(int, input().split())) matrix.append(row) # găsim minimul din prima și ultima coloană min_first_col = matrix[0][0] min_last_col = matrix[0][-1] for i in range(n): if matrix[i][0] < min_first_col: min_first_col = matrix[i][0] if matrix[i][-1] < min_last_col...
 
No edit summary
 
Line 1: Line 1:
Sursă: [https://www.pbinfo.ro/probleme/2807/matrice10]
== Cerinţa ==
Scrieți un program care citește de la tastatură două numere naturale din intervalul '''[2,50]''', '''n''' și '''m''', și elementele unui tablou bidimensional cu '''n''' linii și '''m''' coloane, numere naturale distincte din intervalul '''[0,104]'''.
Programul interschimbă valoarea minimă din ultima coloană a tabloului cu valoarea minimă din prima coloană a tabloului, 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 ==
Programul citește de la tastatură numerele '''n m''', iar apoi cele '''n • m''' elemente ale tabloului.
== Date de ieșire ==
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 ==
* '''2 ≤ n,m ≤ 50'''
* elementele tabloului aparțin intervalului'''[0,104]'''
== Exemple ==
=== Exemplu 1 ===
; Intrare
: 4 3
: 7 5 19
: 3 8 4
: 23 6 1
: 10 2 9
; Ieșire
: 7 5 19
: 1 8 4
: 23 6 3
: 10 2 9
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line="1">
<syntaxhighlight lang="python" line="1">
# citim dimensiunile matricei
def citire_matrice():
n, m = map(int, input().split())
    try:
        n = int(input("Introduceti numarul de linii: "))
        m = int(input("Introduceti numarul de coloane: "))
        if 2 <= n <= 50 and 2 <= m <= 50:
            print("Datele sunt corecte.")
        else:
            print("Datele nu sunt conform restrictiilor impuse.")
            exit()
    except ValueError:
        print("Trebuie introduse doar numere intregi.")
        exit()


# citim elementele matricei
    matrice = []
matrix = []
    for linie in range(n):
for i in range(n):
        matrice.append([])
    row = list(map(int, input().split()))
        for coloana in range(m):
    matrix.append(row)
            for i in range(3):
                try:
                    valoare = int(input(f"Introduceti un numar pentru linia {linie+1}, coloana {coloana+1}: "))
                    if 0<= valoare <= 10**4:
                        print("Datele sunt corecte.")
                        matrice[linie].append(valoare)
                        break
                    else:
                        print("Datele nu sunt conform restrictiilor impuse.")
                except ValueError:
                    print("Trebuie introduse doar numere intregi.")
            else:
                print("Prea multe incercari esuate.")
                exit()


# găsim minimul din prima și ultima coloană
    return matrice
min_first_col = matrix[0][0]
min_last_col = matrix[0][-1]


for i in range(n):
    if matrix[i][0] < min_first_col:
        min_first_col = matrix[i][0]
    if matrix[i][-1] < min_last_col:
        min_last_col = matrix[i][-1]


# înlocuim elementul minim din ultima coloană cu elementul minim din prima coloană
def Matrice10(matrice):
for i in range(n):
     n, m = len(matrice), len(matrice[0])
     if matrix[i][-1] == min_last_col:
     a = matrice
        matrix[i][-1] = min_first_col
     elif matrix[i][0] == min_first_col:
        matrix[i][0] = min_last_col


# afișăm matricea modificată
    i1, j1, i2, j2, min1, min2 = 0, 0, 0, 0, 10000, 10000
for i in range(n):
 
     for j in range(m):
    for i in range(n):
         print(matrix[i][j], end=" ")
        if a[i][0] < min1:
     print()
            min1 = a[i][0]
            i1, j1 = i, 0
        if a[i][m - 1] < min2:
            min2 = a[i][m - 1]
            i2, j2 = i, m - 1
 
    a[i1][j1], a[i2][j2] = a[i2][j2], a[i1][j1]
 
     for i in range(n):
         print(*a[i])
 
 
if _name_ == "_main_":
    matrice = citire_matrice()
    print("Matricea initiala:")
    for linie in matrice:
        print(linie)
     print("Matricea transformata:")
    Matrice10(matrice)
</syntaxhighlight>
</syntaxhighlight>
== Explicații ==
Acest cod este scris in limbajul Python si contine doua functii: "citire_matrice" si "Matrice10".
Functia "citire_matrice" citeste de la tastatura numarul de linii si coloane ale matricei, verifica daca acestea se incadreaza in intervalul [2,50], apoi citeste elementele matricei, verificand daca acestea sunt numere intregi in intervalul [0,104]. Daca valorile introduse nu respecta cerintele, programul se va opri.
Functia "Matrice10" citeste de la tastatura dimensiunile matricei si elementele acesteia, apoi interschimba valorile minime din prima si ultima coloana a matricei. La final, afiseaza matricea modificata.
In program, functia "citire_matrice" este apelata la inceput pentru a citi matricea initiala, iar apoi functia "Matrice10" este apelata pentru a modifica si afisa matricea finala.

Latest revision as of 14:18, 22 April 2023

Sursă: [1]

Cerinţa[edit | edit source]

Scrieți un program care citește de la tastatură două numere naturale din intervalul [2,50], n și m, și elementele unui tablou bidimensional cu n linii și m coloane, numere naturale distincte din intervalul [0,104]. Programul interschimbă valoarea minimă din ultima coloană a tabloului cu valoarea minimă din prima coloană a tabloului, 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]

  • 2 ≤ n,m ≤ 50
  • elementele tabloului aparțin intervalului[0,104]

Exemple[edit | edit source]

Exemplu 1[edit | edit source]

Intrare
4 3
7 5 19
3 8 4
23 6 1
10 2 9
Ieșire
7 5 19
1 8 4
23 6 3
10 2 9

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1"> def citire_matrice():

   try:
       n = int(input("Introduceti numarul de linii: "))
       m = int(input("Introduceti numarul de coloane: "))
       if 2 <= n <= 50 and 2 <= m <= 50:
           print("Datele sunt corecte.")
       else:
           print("Datele nu sunt conform restrictiilor impuse.")
           exit()
   except ValueError:
       print("Trebuie introduse doar numere intregi.")
       exit()
   matrice = []
   for linie in range(n):
       matrice.append([])
       for coloana in range(m):
           for i in range(3):
               try:
                   valoare = int(input(f"Introduceti un numar pentru linia {linie+1}, coloana {coloana+1}: "))
                   if 0<= valoare <= 10**4:
                       print("Datele sunt corecte.")
                       matrice[linie].append(valoare)
                       break
                   else:
                       print("Datele nu sunt conform restrictiilor impuse.")
               except ValueError:
                   print("Trebuie introduse doar numere intregi.")
           else:
               print("Prea multe incercari esuate.")
               exit()
   return matrice


def Matrice10(matrice):

   n, m = len(matrice), len(matrice[0])
   a = matrice
   i1, j1, i2, j2, min1, min2 = 0, 0, 0, 0, 10000, 10000
   for i in range(n):
       if a[i][0] < min1:
           min1 = a[i][0]
           i1, j1 = i, 0
       if a[i][m - 1] < min2:
           min2 = a[i][m - 1]
           i2, j2 = i, m - 1
   a[i1][j1], a[i2][j2] = a[i2][j2], a[i1][j1]
   for i in range(n):
       print(*a[i])


if _name_ == "_main_":

   matrice = citire_matrice()
   print("Matricea initiala:")
   for linie in matrice:
       print(linie)
   print("Matricea transformata:")
   Matrice10(matrice)

</syntaxhighlight>

Explicații[edit | edit source]

Acest cod este scris in limbajul Python si contine doua functii: "citire_matrice" si "Matrice10".
Functia "citire_matrice" citeste de la tastatura numarul de linii si coloane ale matricei, verifica daca acestea se incadreaza in intervalul [2,50], apoi citeste elementele matricei, verificand daca acestea sunt numere intregi in intervalul [0,104]. Daca valorile introduse nu respecta cerintele, programul se va opri.
Functia "Matrice10" citeste de la tastatura dimensiunile matricei si elementele acesteia, apoi interschimba valorile minime din prima si ultima coloana a matricei. La final, afiseaza matricea modificata.
In program, functia "citire_matrice" este apelata la inceput pentru a citi matricea initiala, iar apoi functia "Matrice10" este apelata pentru a modifica si afisa matricea finala.