0987 - Matrice 4

De la Universitas MediaWiki
Versiunea din 4 decembrie 2023 12:34, autor: Miawinator (discuție | contribuții) (Pagină nouă: = Cerința = Se dă o matrice pătratică cu <code>n</code> linii și <code>n</code> coloane și elemente numere naturale. Să se afișeze indicii liniilor pentru care suma elementelor este număr par. Se va defini și folosi subprogramul <code>suma</code>, cu <code>3</code> parametri: * <code>x</code> – matricea * <code>n</code> – dimensiunea matricei * <code>p</code> – un număr natural, <code>1 ≤ p ≤ n</code> care va returna suma elementelor de pe linia <code>...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

Cerința

Se dă o matrice pătratică cu n linii și n coloane și elemente numere naturale. Să se afișeze indicii liniilor pentru care suma elementelor este număr par.

Se va defini și folosi subprogramul suma, cu 3 parametri:

  • x – matricea
  • n – dimensiunea matricei
  • p – un număr natural, 1 ≤ p ≤ n

care va returna suma elementelor de pe linia p a matricei x.

Date de intrare

Fișierul de intrare matriceIN.txt conține pe prima linie numărul n, iar următoarele n linii câte n numere naturale, reprezentând elementele matricei.

Date de ieșire

Fișierul de ieșire matriceOUT.txt va conține pe prima linie indicii determinați, separați prin exact un spațiu, în ordine crescătoare.

Restricții și precizări

  • 1 ≤ n ≤ 100
  • elementele matricei sunt numere naturale mai mici decât 1 000 000
  • liniile matricei sunt numerotate de la 1 la n.

Exemplul 1

Input:

4

1 2 3 4

1 1 1 2

2 2 41 8

3 3 10 2

Output:

1 4

Exemplul 2

Input:

51

1 2 3

1 2 3

1 2 3

Output consola:

Dimensiunea n nu respecta restrictiile.

Rezolvare

def suma(x, n, p):
    # Implementarea subprogramului suma
    return sum(x[p-1])

def verificare_dimensiune_n(n):
    # Verifică restricțiile pentru dimensiunea n
    return 1 <= n <= 100

def verificare_elemente_matrice(matrice):
    # Verifică restricțiile pentru elementele matricei
    for linie in matrice:
        for elem in linie:
            if not (0 <= elem < 1000000):
                return False
    return True

def main():
    # Citirea datelor de intrare din fisierul matrice4.in
    with open("matriceIN.txt", "r") as file_in:
        n = int(file_in.readline().strip())
        matrice = [list(map(int, file_in.readline().split())) for _ in range(n)]

    # Verificarea restricțiilor pentru dimensiunea n
    if not verificare_dimensiune_n(n):
        print("Dimensiunea n nu respecta restrictiile.")
        return

    # Verificarea restricțiilor pentru elementele matricei
    if not verificare_elemente_matrice(matrice):
        print("Elementele matricei nu respecta restrictiile.")
        return

    # Determinarea indiciilor liniilor cu suma elementelor număr par
    linii_par = [i+1 for i in range(n) if suma(matrice, n, i+1) % 2 == 0]

    # Scrierea rezultatului în fisierul matrice4.out
    with open("matriceOUT.txt", "w") as file_out:
        file_out.write(" ".join(map(str, linii_par)))

if __name__ == "__main__":
    main()