4252 - Matrice 11: Difference between revisions
Miawinator (talk | contribs) Pagină nouă: = Cerința = Scrieți un program care citește de la tastatură două numere naturale din intervalul <code>[2,50]</code>, <code>n</code> și <code>m</code>, și elementele unei matrici cu <code>n</code> linii și <code>m</code> coloane, numere naturale distincte din intervalul <code>[0,10000]</code>. Programul interschimbă elementele de pe linia pe care se află valoarea minimă cu elementele de pe linia pe care se află valoarea maximă din matrice, apoi afișează pe ecra... |
Miawinator (talk | contribs) mNo edit summary |
||
Line 49: | Line 49: | ||
10 2 9 | 10 2 9 | ||
Explicație: | |||
Elementul minim (1) se află pe linia 3, iar elementul maxim (39) se află pe prima linie. Prin urmare, se interschimbă linia 1 cu linia 3. | |||
== Exemplul 2 == | == Exemplul 2 == |
Latest revision as of 06:24, 11 December 2023
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 unei matrici cu n
linii și m
coloane, numere naturale distincte din intervalul [0,10000]
.
Programul interschimbă elementele de pe linia pe care se află valoarea minimă cu elementele de pe linia pe care se află valoarea maximă din matrice, apoi afișează pe ecran matricea modificată, câte o linie a matricii pe câte o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spațiu.
Se vor defini și apela următoarele subprograme:
citire
, care citește de la tastatură valorile luin
șim
și apoi elementele matriceiafisare
, care afișează pe ecran elementele matricei conform cerințeilin_min
, care determină indicele liniei pe care se află elementul minim din matricelin_max
, care determină indicele liniei pe care se află elementul maxim din matriceinterschimbare
, care interschimbă în matricea dată elementele de pe două linii date
În programele C/C++ nu se vor folosi variabile globale.
Date de intrare[edit | edit source]
Programul citește de la tastatură numerele n m
, iar apoi cele n • m
elemente ale matricii.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran elementele matricii rezultate.
Restricții și precizări[edit | edit source]
2 ≤ n,m ≤ 50
- indexarea liniilor și a coloanelor se face începând de la 1
- elementele tabloului aparțin intervalului
[0,10000]
- dacă atât elementul minim cât și cel maxim se află pe aceeași linie, atunci matricea se va afișa nemodificată.
Exemplul 1[edit | edit source]
Input:
4 3
7 5 39
3 8 4
23 6 1
10 2 9
Output:
23 6 1
3 8 4
7 5 39
10 2 9
Explicație:
Elementul minim (1) se află pe linia 3, iar elementul maxim (39) se află pe prima linie. Prin urmare, se interschimbă linia 1 cu linia 3.
Exemplul 2[edit | edit source]
2 2
100001 232
32 0
Output:
Input-ul nu respectă restricțiile.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python3" line="1"> def verifica_restrictii(n, m, matrice):
if not (2 <= n <= 50) or not (2 <= m <= 50): return False
if len(matrice) != n: return False
for linie in matrice: if len(linie) != m: return False
for element in linie: if not (0 <= element <= 10000): return False
return True
def citire():
n = int(input("Introduceți numărul de linii (n): ")) m = int(input("Introduceți numărul de coloane (m): "))
matrice = [] for i in range(n): linie = list(map(int, input(f"Introduceți elementele pentru linia {i + 1}: ").split())) matrice.append(linie)
return n, m, matrice
def afisare(matrice):
for linie in matrice: print(*linie)
def lin_min(matrice):
min_val = float('inf') index_linie = 0
for i, linie in enumerate(matrice): if min(linie) < min_val: min_val = min(linie) index_linie = i + 1
return index_linie
def lin_max(matrice):
max_val = 0 index_linie = 0
for i, linie in enumerate(matrice): if max(linie) > max_val: max_val = max(linie) index_linie = i + 1
return index_linie
def interschimbare(matrice, linie1, linie2):
matrice[linie1 - 1], matrice[linie2 - 1] = matrice[linie2 - 1], matrice[linie1 - 1]
def main():
n, m, matrice = citire()
if not verifica_restrictii(n, m, matrice): print("Input-ul nu respectă restricțiile.") return
linie_min = lin_min(matrice) linie_max = lin_max(matrice)
if linie_min != linie_max: interschimbare(matrice, linie_min, linie_max)
print("Matricea modificată:") afisare(matrice)
if __name__ == "__main__":
main()
</syntaxhighlight>