2299 - Media Geometrica: Difference between revisions

From Bitnami MediaWiki
Paul Ungur (talk | contribs)
Paul Ungur (talk | contribs)
No edit summary
 
(7 intermediate revisions by 2 users not shown)
Line 6: Line 6:


== Date de ieșire ==
== Date de ieșire ==
Programul va afișa pe ecran media geometrică a celor <span style="color: red;"> n </span> numere.
Dacă datele sunt introduse corect, pe ecran se va afișa: '''"Datele sunt introduse corect."''', apoi programul va afișa pe ecran media geometrică a celor <span style="color: red;"> n </span> numere. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: '''"Datele nu corespund restricțiilor impuse."'''.


== Restricții și precizări ==
== Restricții și precizări ==
Line 15: Line 15:
== Exemplu ==
== Exemplu ==
Intrare
Intrare
4  
: 4  
2 4 2 1
: 2 4 2 1


Ieșire
Ieșire
2
: Datele sunt introduse corect.
: 2


== Explicație ==
== Explicație ==
Line 25: Line 26:


== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line="1">
def validare(n, lista):
    # Verificăm dacă numărul n respectă restricțiile impuse
    if not 1 < n <= 10:
        print("Datele nu corespund restricțiilor impuse.")
        return False


import math
    # Verificăm dacă numerele din listă respectă restricțiile impuse
    for nr in lista:
        if not 0 <= nr <= 50:
            print("Datele nu corespund restricțiilor impuse.")
            return False


n = int(input("Introduceti numarul n: "))
    # Toate validările au trecut
numbers = input("Introduceti cele " + str(n) + " numere separate prin spatiu: ").split()
    print("Datele sunt introduse corect.")
numbers = [int(num) for num in numbers]
    return True


geometric_mean = math.prod(numbers) ** (1/n)
print("Media geometrica este:", round(geometric_mean, 2))


</syntaxhighlight>
def media_geometrica(n, lista):
    produs = 1
    for nr in lista:
        produs *= nr
    return produs ** (1 / n)


== Date de intrare ==
Programul citește de la tastatură numărul natural <span style="color: red;"> n </span>, apoi <span style="color: red;"> n </span> numere naturale.


== Date de ieșire ==
if __name__ == '__main__':
Programul va afișa pe ecran media geometrică a celor <span style="color: red;"> n </span> numere.
    n = int(input())
    lista = list(map(int, input().split()))
    if validare(n, lista):
        media = media_geometrica(n, lista)
        print(int(media))


== Restricții și precizări ==
</syntaxhighlight>
<span style="color: red;"> 1 < n ≤ 10 </span>
numerele citite vor fi cuprinse între <span style="color: red;"> 0 </span> și <span style="color: red;"> 50 </span>.
rezultatul va fi punctat dacă diferența dintre cel afișat de program și cel corect este mai mică decât <span style="color: red;"> 0.01 </span>.
 
== Exemplu ==
Intrare
4
2 4 2 1


Ieșire
==Explicatie cod==
2
Funcția validare(n, lista):
Această funcție primește doi parametri, n și lista, reprezentând un număr și o listă de numere întregi.
În primul rând, funcția verifică dacă n respectă restricțiile impuse: trebuie să fie mai mare decât 1 și mai mic sau egal cu 10. Dacă nu se respectă aceste restricții, afișează un mesaj de eroare și returnează False, semnalând că datele nu sunt valide.
Apoi, funcția verifică dacă fiecare număr din lista respectă restricțiile impuse: trebuie să fie între 0 și 50 (inclusiv). Dacă un număr nu respectă aceste restricții, afișează un mesaj de eroare și returnează False.
Dacă ambele verificări trec fără a găsi probleme, funcția afișează un mesaj că datele sunt introduse corect și returnează True, semnalând că datele sunt valide.
Funcția media_geometrica(n, lista):
Această funcție primește aceiași doi parametri, n și lista, ca și funcția validare.
Funcția calculează media geometrică a numerelor din lista. Inițial, se inițializează o variabilă produs cu valoarea 1.
Apoi, se parcurge fiecare număr nr din lista și se înmulțește produs cu nr.
După ce s-au înmulțit toate numerele din lista, se calculează media geometrică ridicând produs la puterea 1 / n, unde n este numărul dat ca parametru.
Funcția returnează valoarea mediei geometrice.
În cadrul secțiunii if __name__ == '__main__': se realizează următoarele acțiuni:


== Explicație ==
Se citește de la tastatură un număr întreg n.
<span style="color: red;"> 2⋅4⋅2⋅1−−−−−−−−√4=2 </span>
Se citește de la tastatură o linie de numere întregi separate prin spațiu și se transformă într-o listă de numere întregi lista, folosind funcția map și split.
Se apelează funcția validare(n, lista) pentru a verifica validitatea datelor. Dacă datele sunt valide, se calculează media geometrică utilizând funcția media_geometrica(n, lista) și se afișează valoarea acesteia (convertită la întreg folosind int()).

Latest revision as of 17:52, 29 June 2023

Cerinta[edit]

Se dau n numere naturale. Calculați media lor geometrică.

Date de intrare[edit]

Programul citește de la tastatură numărul natural n , apoi n numere naturale.

Date de ieșire[edit]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi programul va afișa pe ecran media geometrică a celor n numere. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse.".

Restricții și precizări[edit]

1 < n ≤ 10 numerele citite vor fi cuprinse între 0 și 50 . rezultatul va fi punctat dacă diferența dintre cel afișat de program și cel corect este mai mică decât 0.01 .

Exemplu[edit]

Intrare

4
2 4 2 1

Ieșire

Datele sunt introduse corect.
2

Explicație[edit]

2⋅4⋅2⋅1−−−−−−−−√4=2

Rezolvare[edit]

<syntaxhighlight lang="python" line="1"> def validare(n, lista):

   # Verificăm dacă numărul n respectă restricțiile impuse
   if not 1 < n <= 10:
       print("Datele nu corespund restricțiilor impuse.")
       return False
   # Verificăm dacă numerele din listă respectă restricțiile impuse
   for nr in lista:
       if not 0 <= nr <= 50:
           print("Datele nu corespund restricțiilor impuse.")
           return False
   # Toate validările au trecut
   print("Datele sunt introduse corect.")
   return True


def media_geometrica(n, lista):

   produs = 1
   for nr in lista:
       produs *= nr
   return produs ** (1 / n)


if __name__ == '__main__':

   n = int(input())
   lista = list(map(int, input().split()))
   if validare(n, lista):
       media = media_geometrica(n, lista)
       print(int(media))

</syntaxhighlight>

Explicatie cod[edit]

Funcția validare(n, lista): Această funcție primește doi parametri, n și lista, reprezentând un număr și o listă de numere întregi. În primul rând, funcția verifică dacă n respectă restricțiile impuse: trebuie să fie mai mare decât 1 și mai mic sau egal cu 10. Dacă nu se respectă aceste restricții, afișează un mesaj de eroare și returnează False, semnalând că datele nu sunt valide. Apoi, funcția verifică dacă fiecare număr din lista respectă restricțiile impuse: trebuie să fie între 0 și 50 (inclusiv). Dacă un număr nu respectă aceste restricții, afișează un mesaj de eroare și returnează False. Dacă ambele verificări trec fără a găsi probleme, funcția afișează un mesaj că datele sunt introduse corect și returnează True, semnalând că datele sunt valide. Funcția media_geometrica(n, lista): Această funcție primește aceiași doi parametri, n și lista, ca și funcția validare. Funcția calculează media geometrică a numerelor din lista. Inițial, se inițializează o variabilă produs cu valoarea 1. Apoi, se parcurge fiecare număr nr din lista și se înmulțește produs cu nr. După ce s-au înmulțit toate numerele din lista, se calculează media geometrică ridicând produs la puterea 1 / n, unde n este numărul dat ca parametru. Funcția returnează valoarea mediei geometrice. În cadrul secțiunii if __name__ == '__main__': se realizează următoarele acțiuni:

Se citește de la tastatură un număr întreg n. Se citește de la tastatură o linie de numere întregi separate prin spațiu și se transformă într-o listă de numere întregi lista, folosind funcția map și split. Se apelează funcția validare(n, lista) pentru a verifica validitatea datelor. Dacă datele sunt valide, se calculează media geometrică utilizând funcția media_geometrica(n, lista) și se afișează valoarea acesteia (convertită la întreg folosind int()).