0768 - Suma Pare 3

De la Universitas MediaWiki

Sursă: [1]

Cerință

Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Determinați suma valorilor pare distincte din matrice. Dacă o valoare pară apare în matrice de mai multe ori, se va aduna o singură dată.

Date de intrare

Programul citește de la tastatură numerele n şi m, iar apoi n*m' numere naturale, separate prin spaţii, reprezentând elementele matricei, linie cu linie.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.", Programul afișează pe ecran suma căutată S. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".

Restricții și precizări

  • 1 ≤ n ≤ 100
  • elementele matricei vor fi mai mici sau egale cu 10000

Exemple

Exemplu 1

Date de intrare
4 6
4 20 15 23 18 9
1 8 23 22 14 18
17 15 13 18 12 15
3 18 8 20 12 5
Date de ieșire
98

Exemplu 2

Date de intrare
a v
Date de ieșire
Datele nu sunt comform restrictiilor impuse

Rezolvare

def citire_lin_col():
    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.")
            return n, m
        else:
            print("Datele nu sunt conform restrictiilor impuse.")
            exit()
    except ValueError:
        print("Trebuie introduse doar numere intregi.")
        exit()

def citeste_valori_matrice(lin, col):
    matrice = []
    for linie in range(lin):
        matrice.append([])
        for coloana in range(col):
            for i in range(3):
                try:
                    n = int(input(f"Introduceti un numar pentru linia {linie+1}, coloana {coloana+1}: "))
                    if n <= 10000:
                        print("Datele sunt corecte.")
                        matrice[linie].append(n)
                        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 elemente_pare(matrice, n, m):
    numere_pare= set()
    for i in range(n):
        for j in range(m):
            if matrice[i][j] % 2 == 0:
                numere_pare.add(matrice[i][j])

    print(sum(numere_pare))

if _name_ == "_main_":
    n, m = citire_lin_col()
    matrice = citeste_valori_matrice(n, m)
    s=elemente_pare(matrice, n, m)
    print(s)

Explicatii

Acest cod definește trei funcții:
citire_lin_col(): Această funcție primește de la utilizator numărul de linii și de coloane pentru o matrice și verifică dacă acestea se încadrează în limitele impuse. Dacă valorile introduse sunt valide, funcția returnează aceste valori.
citeste_valori_matrice(lin, col): Această funcție primește numărul de linii și de coloane pentru o matrice și primește de la utilizator valorile matricei. Pentru fiecare element al matricei, utilizatorul este rugat să introducă un număr. Se vor face trei încercări de a introduce un număr valid. Dacă utilizatorul introduce un număr valid, valoarea este adăugată la matrice și se trece la următorul element. Dacă după trei încercări utilizatorul nu a introdus un număr valid, programul se oprește.
elemente_pare(matrice, n, m): Această funcție primește o matrice și numărul de linii și de coloane ale acesteia. Funcția calculează suma tuturor numerelor pare din matrice și o returnează.
În main(), se folosesc aceste funcții pentru a citi matricea și a calcula suma numerelor pare din matrice, care este apoi afișată.