0222 - Min Cols

De la Universitas MediaWiki

Sursă: [1]

Enunt

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

Cerinţa

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

Date de intrare

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

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

  • 2 ≤ n ≤ 50
  • elementele tabloului sunt cuprinse între -1000 şi 1000.

Exemple

Exemplu 1

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

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)

Explicații

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.