1581 - Max Suma: Difference between revisions

From Bitnami MediaWiki
Sinn Erich (talk | contribs)
Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/4273/prodpp] == Cerinţa == Se dă numărul natural nenul '''n'''. Să se determine produsul primelor '''n''' pătrate perfecte nenule. == Date de intrare == Programul citește de la tastatură numărul '''n'''. == Date de ieșire == Programul va afișa pe ecran, mesajul "Datele introduse corespund cerințelor" și pe o linie nouă numărul '''P''' , reprezentând produsul primelor '''n''' pătrate perfecte nenule, în caz contrar prog...
 
 
(16 intermediate revisions by one other user not shown)
Line 1: Line 1:
Sursa: [https://www.pbinfo.ro/probleme/4273/prodpp]
Sursa: [https://www.pbinfo.ro/probleme/4273/prodpp]
== Cerinţa ==
== Cerinţa ==
Se dă numărul natural nenul '''n'''. Să se determine produsul primelor '''n''' pătrate perfecte nenule.
Se dau '''n''' şiruri, fiecare şir fiind format din '''m''' numere naturale '''mai mici decat 500'''. Să se determine cel mai mare număr din fiecare şir. Să se determine '''suma''' numerelor fiecărui şir.
 
== Date de intrare ==
== Date de intrare ==
Programul citește de la tastatură numărul '''n'''.
Programul citeste pe rând '''n, m şi restul numerelor'''.
 
== Date de ieșire ==  
== Date de ieșire ==  
Programul va afișa pe ecran,  mesajul "Datele introduse corespund cerințelor" și pe o linie nouă numărul '''P''' , reprezentând produsul primelor '''n''' pătrate perfecte nenule, în caz contrar programul va afișa pe o linie noua mesajul "Datele introduse nu corespund cerintelor."
Se vor scrie pe fiecare rând pentru fiecare şir '''cel mai mare număr''' din şir şi '''suma'''.
 
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează cel mai mare număr din fiecare şir. Să se determine suma numerelor fiecărui şir.
 
În caz contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse."


== Restricţii şi precizări ==
== Restricţii şi precizări ==
* 0 < '''n''' ⩽ 10
1 ≤ '''n''' ≤ 100
 
1 ≤ '''m''' ≤ 50


== Exemplul 1 ==
== Exemplul 1 ==
; Intrare
; Datele de intrare:
: 4
: Introduceti numarul de siruri:
; Ieșire
: 3
: Datele corespund cerințelor.
: Introduceti numarul maxim de numere dintr-un sir:
: 576
: 5
: Introduceti sirul de numere separate prin spatiu:
:15 25 44 66 87
: Introduceti sirul de numere separate prin spatiu:
:25 11 44 78 32
: Introduceti sirul de numere separate prin spatiu:
:20 59 87 45 99
; Datele de ieșire:
:Datele sunt introduse corect.
:Sirul 0:
:Cel mai mare numar: 87
:Suma numerelor: 237
:Sirul 1:
:Cel mai mare numar: 78
:Suma numerelor: 190
:Sirul 2:
:Cel mai mare numar: 99
:Suma numerelor: 310
<br>
<br>


== Rezolvare ==  
== Rezolvare ==  
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
#4273
#1581
def patrate_perfecte(n):
def validate_input(n, m):
     patrate = []
     """
     i = 1
    Verifica daca valorile introduse pentru n si m respecta
     while len(patrate) < n:
    restricțiile impuse.
         patrat = i * i
     """
         patrate.append(patrat)
     if not (1 <= n <= 100):
         i += 1
         print("Datele nu corespund restricțiilor impuse.")
     return patrate
        return False
    if not (1 <= m <= 50):
         print("Datele nu corespund restricțiilor impuse.")
         return False
     return True


def max_and_sum(sir):
    """
    Gaseste cel mai mare numar din sir si suma tuturor numerelor.
    """
    max_numar = max(sir)
    suma = sum(sir)
    return max_numar, suma


def calculeaza(numbers):
def print_result(max_numar, suma, i):
     product = 1
     """
     for number in numbers:
     Afiseaza rezultatele pentru sirul cu indicele i.
        product *= number
    """
     return product
    print(f"Sirul {i}:")
    print(f"Cel mai mare numar: {max_numar}")
    print(f"Suma numerelor: {suma}")
     print()


def solution_function(n, m, siruri_numere):
    """
    Functia de rezolvare a problemei.
    """
    for i, sir in enumerate(siruri_numere):
        max_numar, suma = max_and_sum(sir)
        print_result(max_numar, suma, i)


def validare_numar(n):
if __name__ == '__main__':
     if n < 1 or n > 10:
    n = int(input("Introduceti numarul de siruri: "))
         return False
    m = int(input("Introduceti numarul maxim de numere dintr-un sir: "))
    return True
    print("Datele sunt corecte.")
     if not validate_input(n, m):
         exit()


    siruri_numere = []
    for i in range(n):
        sir = input("Introduceti sirul de numere separate prin spatiu: ")
        numere = sir.split()
        numere_int = [int(x) for x in numere]
        if len(numere_int) > m:
            print("Datele nu corespund restricțiilor impuse.")
            exit()
        siruri_numere.append(numere_int)


if __name__ == '__main__':
     solution_function(n, m, siruri_numere)
     n = int(input("Introduceți numărul n: "))
    if not validare_numar(n):
        print("Datele introduse nu corespund cerintelor.")
    else:
        squares = patrate_perfecte(n)
        product = calculeaza(squares)
        print("Datele introduse corespund cerintelor.")
        print(product)




</syntaxhighlight>
</syntaxhighlight>
'''Explicatie cod:'''
Acest cod citeste n siruri de numere separate prin spatiu, apoi pentru fiecare sir de numere calculeaza cel mai mare numar si suma tuturor numerelor din sir.
Functia max_and_sum(sir) primeste un sir de numere si calculeaza cel mai mare numar din sir si suma tuturor numerelor din sir. Pentru aceasta, initializeaza max_numar cu 0 si suma cu 0, apoi parcurge fiecare numar din sir, actualizand valorile max_numar si suma corespunzator. La final, functia returneaza cele doua valori.
Functia print_result(max_numar, suma, index) primeste cel mai mare numar si suma numerelor dintr-un sir, impreuna cu numarul sirului, si le afiseaza.
In main, se citesc sirurile de numere folosind read_input(), apoi se parcurg sirurile folosind enumerate(siruri_numere) pentru a retine si indexul fiecarui sir. Pentru fiecare sir, se calculeaza cel mai mare numar si suma numerelor folosind max_and_sum(sir), iar apoi se afiseaza aceste valori folosind print_result(max_numar, suma, i), unde i este indexul sirului.

Latest revision as of 17:28, 29 April 2023

Sursa: [1]

Cerinţa[edit | edit source]

Se dau n şiruri, fiecare şir fiind format din m numere naturale mai mici decat 500. Să se determine cel mai mare număr din fiecare şir. Să se determine suma numerelor fiecărui şir.

Date de intrare[edit | edit source]

Programul citeste pe rând n, m şi restul numerelor.

Date de ieșire[edit | edit source]

Se vor scrie pe fiecare rând pentru fiecare şir cel mai mare număr din şir şi suma.

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează cel mai mare număr din fiecare şir. Să se determine suma numerelor fiecărui şir.

În caz contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse."

Restricţii şi precizări[edit | edit source]

1 ≤ n ≤ 100

1 ≤ m ≤ 50

Exemplul 1[edit | edit source]

Datele de intrare
Introduceti numarul de siruri:
3
Introduceti numarul maxim de numere dintr-un sir:
5
Introduceti sirul de numere separate prin spatiu:
15 25 44 66 87
Introduceti sirul de numere separate prin spatiu:
25 11 44 78 32
Introduceti sirul de numere separate prin spatiu:
20 59 87 45 99
Datele de ieșire
Datele sunt introduse corect.
Sirul 0:
Cel mai mare numar: 87
Suma numerelor: 237
Sirul 1:
Cel mai mare numar: 78
Suma numerelor: 190
Sirul 2:
Cel mai mare numar: 99
Suma numerelor: 310


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 1581

def validate_input(n, m):

   """
   Verifica daca valorile introduse pentru n si m respecta
   restricțiile impuse.
   """
   if not (1 <= n <= 100):
       print("Datele nu corespund restricțiilor impuse.")
       return False
   if not (1 <= m <= 50):
       print("Datele nu corespund restricțiilor impuse.")
       return False
   return True

def max_and_sum(sir):

   """
   Gaseste cel mai mare numar din sir si suma tuturor numerelor.
   """
   max_numar = max(sir)
   suma = sum(sir)
   return max_numar, suma

def print_result(max_numar, suma, i):

   """
   Afiseaza rezultatele pentru sirul cu indicele i.
   """
   print(f"Sirul {i}:")
   print(f"Cel mai mare numar: {max_numar}")
   print(f"Suma numerelor: {suma}")
   print()

def solution_function(n, m, siruri_numere):

   """
   Functia de rezolvare a problemei.
   """
   for i, sir in enumerate(siruri_numere):
       max_numar, suma = max_and_sum(sir)
       print_result(max_numar, suma, i)

if __name__ == '__main__':

   n = int(input("Introduceti numarul de siruri: "))
   m = int(input("Introduceti numarul maxim de numere dintr-un sir: "))
   print("Datele sunt corecte.")
   if not validate_input(n, m):
       exit()
   siruri_numere = []
   for i in range(n):
       sir = input("Introduceti sirul de numere separate prin spatiu: ")
       numere = sir.split()
       numere_int = [int(x) for x in numere]
       if len(numere_int) > m:
           print("Datele nu corespund restricțiilor impuse.")
           exit()
       siruri_numere.append(numere_int)
   solution_function(n, m, siruri_numere)


</syntaxhighlight>

Explicatie cod:

Acest cod citeste n siruri de numere separate prin spatiu, apoi pentru fiecare sir de numere calculeaza cel mai mare numar si suma tuturor numerelor din sir.

Functia max_and_sum(sir) primeste un sir de numere si calculeaza cel mai mare numar din sir si suma tuturor numerelor din sir. Pentru aceasta, initializeaza max_numar cu 0 si suma cu 0, apoi parcurge fiecare numar din sir, actualizand valorile max_numar si suma corespunzator. La final, functia returneaza cele doua valori.

Functia print_result(max_numar, suma, index) primeste cel mai mare numar si suma numerelor dintr-un sir, impreuna cu numarul sirului, si le afiseaza.

In main, se citesc sirurile de numere folosind read_input(), apoi se parcurg sirurile folosind enumerate(siruri_numere) pentru a retine si indexul fiecarui sir. Pentru fiecare sir, se calculeaza cel mai mare numar si suma numerelor folosind max_and_sum(sir), iar apoi se afiseaza aceste valori folosind print_result(max_numar, suma, i), unde i este indexul sirului.