0768 - Suma Pare 3: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == rezolvare == <syntaxhighlight lang="python" line="1"> n, m = map(int, input().split()) matrix = [list(map(int, input().split())) for _ in range(n)] unique_even = set() for i in range(n): for j in range(m): if matrix[i][j] % 2 == 0: unique_even.add(matrix[i][j]) print(sum(unique_even)) </syntaxhighlight>
 
No edit summary
 
Line 1: Line 1:
== rezolvare ==
Sursă: [https://www.pbinfo.ro/probleme/768/sumapare3]
== 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 ==
<syntaxhighlight lang="python" line="1">
<syntaxhighlight lang="python" line="1">
n, m = map(int, input().split())
def citire_lin_col():
matrix = [list(map(int, input().split())) for _ in range(n)]
    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()


unique_even = set()
def citeste_valori_matrice(lin, col):
for i in range(n):
    matrice = []
    for j in range(m):
    for linie in range(lin):
        if matrix[i][j] % 2 == 0:
        matrice.append([])
             unique_even.add(matrix[i][j])
        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


print(sum(unique_even))
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)
</syntaxhighlight>
</syntaxhighlight>
== 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ă.

Latest revision as of 12:47, 19 April 2023

Sursă: [1]

Cerință[edit]

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[edit]

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[edit]

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[edit]

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

Exemple[edit]

Exemplu 1[edit]

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[edit]

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

Rezolvare[edit]

<syntaxhighlight lang="python" line="1"> 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)

</syntaxhighlight>

Explicatii[edit]

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ă.