0766 - Nr Pare: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Rezolvare == <syntaxhighlight lang="python" line="1"> n, m = map(int, input().split()) max_count = 0 max_rows = [] for i in range(n): row = list(map(int, input().split())) count = sum(1 for x in row if x % 2 == 0) if count > max_count: max_count = count max_rows = [i+1] elif count == max_count: max_rows.append(i+1) if max_count == 0: print("NU EXISTA") else: print(*max_rows) </syntaxhighlight>
 
No edit summary
 
Line 1: Line 1:
Sursă: [https://www.pbinfo.ro/probleme/766/nrpare]
== Cerință ==
Se dă o matrice cu '''n''' linii şi '''m''' coloane şi elemente numere naturale. Determinați indicele liniei care conține număr maxim de elemente pare. Dacă există mai multe linii cu număr maxim de elemente pare, se vor afișa toți indicii, în ordine crescătoare.
== 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 indicii liniilor cu număr maxim de elemente pare, în ordine crescătoare, separați prin câte un spaţiu. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".
== Restricții și precizări ==
* 1 ≤ m,n ≤ 100
* elementele matricei vor fi mai mici decât '''10000'''
* liniile matricei au indici de la '''1''' la '''n'''.
== 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
: 2 4
==== explicatie ====
Liniile '''2''' și '''4''' din matrice conțin număr maxim de elemente pare, '''4'''
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line="1">
<syntaxhighlight lang="python" line="1">
n, m = map(int, input().split())
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()


max_count = 0
def citeste_valori_matrice(lin, col):
max_rows = []
    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


for i in range(n):
def elemente_pare_numar_max(matrice, n, m):
     row = list(map(int, input().split()))
     max_contor = 0
    count = sum(1 for x in row if x % 2 == 0)
    max_linii = []
    if count > max_count:
    for i in range(n):
        max_count = count
        contor = sum(1 for x in matrice[i] if x % 2 == 0)
        max_rows = [i+1]
        if contor > max_contor:
    elif count == max_count:
            max_contor = contor
        max_rows.append(i+1)
            max_linii = [i+1]
        elif contor == max_contor:
            max_linii.append(i+1)


if max_count == 0:
    if max_contor == 0:
    print("NU EXISTA")
        print("NU EXISTA")
else:
    else:
    print(*max_rows)
        print(*max_linii)
if _name_ == "_main_":
    n, m = citire_lin_col()
    matrice = citeste_valori_matrice(n, m)
    elemente_pare_numar_max(matrice, n, m)
</syntaxhighlight>
</syntaxhighlight>
== Explicatii ==
Funcția citire_lin_col() citește de la tastatură numărul de linii n și de coloane m ale matricei. Se verifică dacă valorile citite se încadrează în intervalul [1, 100]. Dacă valorile sunt corecte, funcția returnează valorile citite.
Funcția citeste_valori_matrice(lin, col) citește de la tastatură valorile matricei. Se verifică dacă fiecare valoare este un număr întreg și se încadrează în intervalul [1, 10000]. Dacă o valoare introdusă nu respectă restricțiile, utilizatorul este avertizat și i se cere să introducă o nouă valoare. Dacă utilizatorul nu poate introduce o valoare corectă după trei încercări, programul se va opri. Funcția returnează matricea completată.
Funcția elemente_pare_numar_max(matrice, n, m) determină indicele liniei care conține cele mai multe elemente pare în matrice. Se verifică dacă matricea are cel puțin un element par. Dacă matricea nu are elemente pare, se va afișa mesajul "NU EXISTA". Altfel, se va afișa indicele/indicii liniilor care conțin cele mai multe elemente pare, în ordine crescătoare.
Funcția main() este punctul de intrare în program. Se citesc dimensiunile matricei și valorile acesteia utilizând funcțiile citire_lin_col() și citeste_valori_matrice(). Apoi, se determină indicele/indicii liniilor care conțin cele mai multe elemente pare în matrice utilizând funcția elemente_pare_numar_max().

Latest revision as of 12:59, 19 April 2023

Sursă: [1]

Cerință[edit]

Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Determinați indicele liniei care conține număr maxim de elemente pare. Dacă există mai multe linii cu număr maxim de elemente pare, se vor afișa toți indicii, în ordine crescătoare.

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 indicii liniilor cu număr maxim de elemente pare, în ordine crescătoare, separați prin câte un spaţiu. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".

Restricții și precizări[edit]

  • 1 ≤ m,n ≤ 100
  • elementele matricei vor fi mai mici decât 10000
  • liniile matricei au indici de la 1 la n.

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
2 4

explicatie[edit]

Liniile 2 și 4 din matrice conțin număr maxim de elemente pare, 4

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_numar_max(matrice, n, m):

   max_contor = 0
   max_linii = []
   for i in range(n):
       contor = sum(1 for x in matrice[i] if x % 2 == 0)
       if contor > max_contor:
           max_contor = contor
           max_linii = [i+1]
       elif contor == max_contor:
           max_linii.append(i+1)
   if max_contor == 0:
       print("NU EXISTA")
   else:
       print(*max_linii)

if _name_ == "_main_":

   n, m = citire_lin_col()
   matrice = citeste_valori_matrice(n, m)
   elemente_pare_numar_max(matrice, n, m)

</syntaxhighlight>

Explicatii[edit]

Funcția citire_lin_col() citește de la tastatură numărul de linii n și de coloane m ale matricei. Se verifică dacă valorile citite se încadrează în intervalul [1, 100]. Dacă valorile sunt corecte, funcția returnează valorile citite.
Funcția citeste_valori_matrice(lin, col) citește de la tastatură valorile matricei. Se verifică dacă fiecare valoare este un număr întreg și se încadrează în intervalul [1, 10000]. Dacă o valoare introdusă nu respectă restricțiile, utilizatorul este avertizat și i se cere să introducă o nouă valoare. Dacă utilizatorul nu poate introduce o valoare corectă după trei încercări, programul se va opri. Funcția returnează matricea completată.
Funcția elemente_pare_numar_max(matrice, n, m) determină indicele liniei care conține cele mai multe elemente pare în matrice. Se verifică dacă matricea are cel puțin un element par. Dacă matricea nu are elemente pare, se va afișa mesajul "NU EXISTA". Altfel, se va afișa indicele/indicii liniilor care conțin cele mai multe elemente pare, în ordine crescătoare.
Funcția main() este punctul de intrare în program. Se citesc dimensiunile matricei și valorile acesteia utilizând funcțiile citire_lin_col() și citeste_valori_matrice(). Apoi, se determină indicele/indicii liniilor care conțin cele mai multe elemente pare în matrice utilizând funcția elemente_pare_numar_max().