0768 - Suma Pare 3: Difference between revisions
Andor Giulia (talk | contribs) 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> |
Andor Giulia (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
== | 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 | 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): | |||
for | 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 | |||
print(sum( | 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 | edit source]
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 | edit source]
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 | edit source]
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 | edit source]
- 1 ≤ n ≤ 100
- elementele matricei vor fi mai mici sau egale cu 10000
Exemple[edit | edit source]
Exemplu 1[edit | edit source]
- 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 | edit source]
- Date de intrare
- a v
- Date de ieșire
- Datele nu sunt comform restrictiilor impuse
Rezolvare[edit | edit source]
<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 | edit source]
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ă.