0785 - Elim Min Max

From Bitnami MediaWiki
Revision as of 13:58, 19 April 2023 by MiclausIoana (talk | contribs) (Pagină nouă: == Rezolvare == def citire_matrice(): try: n = int(input("Introduceti numarul de linii: ")) m = int(input("Introduceti numarul de coloane: ")) if 1 <= n <= 100 and 1 <= m <= 100: 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 ran...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Rezolvare

def citire_matrice():

   try:
       n = int(input("Introduceti numarul de linii: "))
       m = int(input("Introduceti numarul de coloane: "))
       if 1 <= n <= 100 and 1 <= m <= 100:
           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 valoare <= 1000000:
                       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 eliminare_linie(matrice):

   # gasirea pozitiei elementului maxim
   max_val = matrice[0][0]
   max_i, max_j = 0, 0
   for i in range(len(matrice)):
       for j in range(len(matrice[0])):
           if matrice[i][j] > max_val:
               max_val = matrice[i][j]
               max_i, max_j = i, j
   # gasirea pozitiei elementului minim
   min_val = matrice[0][0]
   min_i, min_j = 0, 0
   for i in range(len(matrice)):
       for j in range(len(matrice[0])):
           if matrice[i][j] < min_val:
               min_val = matrice[i][j]
               min_i, min_j = i, j
   # eliminarea liniilor si coloanelor
   new_matrice = []
   for i in range(len(matrice)):
       if i == max_i or i == min_i:
           continue
       new_row = []
       for j in range(len(matrice[0])):
           if j == max_j or j == min_j:
               continue
           new_row.append(matrice[i][j])
       new_matrice.append(new_row)
   # afisarea matricei transformate
   for row in new_matrice:
       print(*row)

if _name_ == "_main_":

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

Explicati

citire_matrice() - această funcție primește de la utilizator numărul de linii și coloane ale matricei și apoi îl solicită să introducă valorile matricei. Dacă valorile introduse sunt în intervalul [1, 100] și sunt numere întregi, atunci funcția returnează matricea creată.

eliminare_linie(matrice) - această funcție primește o matrice și urmărește două obiective: să găsească pozițiile elementului maxim și minim din matrice și să elimine liniile și coloanele care conțin aceste elemente. Apoi, funcția afișează matricea modificată.

main() - această funcție este punctul de intrare în program. Ea inițializează matricea cu ajutorul funcției citire_matrice(), afișează matricea inițială și apoi aplică funcția eliminare_linie() pentru a obține matricea modificată.