2807 - Matrice 10: Difference between revisions
MiclausIoana (talk | contribs) 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... |
Andor Giulia (talk | contribs) 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"> | ||
def citire_matrice(): | |||
n | 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): | |||
for i in range( | 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): | |||
for | for i in range(n): | ||
print( | 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.