0222 - Min Cols

From Bitnami MediaWiki

Sursă: [1]

Enunt[edit | edit source]

Se consideră tabloul bidimensional cu n linii şi n coloane ce conţine numere întregi cu cel mult patru cifre fiecare.

Cerinţa[edit | edit source]

Să se determine, pentru fiecare coloană, valoarea minimă de pe coloana respectivă.

Date de intrare[edit | edit source]

Fişierul de intrare mincols.in conţine pe prima linie numărul n, iar pe următoarele n linii câte n numere naturale separate prin spaţii, reprezentând elementele tabloului.

Date de ieșire[edit | edit source]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.". Fişierul de ieşire mincols.out va conţine pe prima linie n numere, reprezentând în ordine minimele de pe coloane, separate printr-un spaţiu. Î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 ≤ 50
  • elementele tabloului sunt cuprinse între -1000 şi 1000.

Exemple[edit | edit source]

Exemplu 1[edit | edit source]

mincols.in
4
122 103 5 10
-7 18 -10 2
107 999 59 4
1 200 100 7
mincols.out
-7 18 -10 2

Rezolvare[edit | edit source]

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

   try:
       with open("mincols.in", "r") as fin:
           n = int(fin.readline())
           if 2 <= n <= 50:
               print("Datele sunt corecte.")
           else:
               print("Datele nu sunt conform restrictiilor impuse.")
               exit()
           matrice = []
           for linie in range(n):
               linie_matrice = []
               valori = fin.readline().split()
               for coloana in range(n):
                   try:
                       valoare = int(valori[coloana])
                       if -1000 <= valoare <= 1000:
                           print("Datele sunt corecte.")
                           linie_matrice.append(valoare)
                       else:
                           print("Datele nu sunt conform restrictiilor impuse.")
                           exit()
                   except ValueError:
                       print("Trebuie introduse doar numere intregi.")
                       exit()
               matrice.append(linie_matrice)
           return n, matrice
   except FileNotFoundError:
       print("Fisierul mincols.in nu exista.")
       exit()


def mincols():

   n, a = citire_matrice()
   with open("mincols.out", "w") as fout:
       for j in range(n):
           mini = 1001
           for i in range(n):
               if a[i][j] < mini:
                   mini = a[i][j]
           fout.write(str(mini) + " ")

if _name_ == "_main_":

   col_zero = mincols()
   print("rezultatul este: ", col_zero)

</syntaxhighlight>

Explicații[edit | edit source]

Acest cod implementează o funcție numită citire_matrice() care citește o matrice de numere întregi dintr-un fișier de intrare numit "mincols.in" și verifică dacă dimensiunile și valorile matricei îndeplinesc anumite restricții. Dacă matricea nu îndeplinește aceste restricții, programul se oprește prin apelarea funcției exit().
Funcția mincols() deschide fișierul "mincols.in" și citește dimensiunea matricei și elementele acesteia. Apoi, pentru fiecare coloană a matricei, determină valoarea minimă din acea coloană și o scrie într-un fișier de ieșire numit "mincols.out".
În funcția main, programul apelează funcția mincols() și afișează un mesaj de confirmare.