2299 - Media Geometrica: Difference between revisions

From Bitnami MediaWiki
Paul Ungur (talk | contribs)
Paul Ungur (talk | contribs)
No edit summary
 
(4 intermediate revisions by the same user 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 26: Line 27:
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line="1">
<syntaxhighlight lang="python" line="1">
def read_input():
def validare(n, lista):
     n = int(input("Introduceti numarul de numere: "))
     # Verificăm dacă numărul n respectă restricțiile impuse
     nums = []
     if not 1 < n <= 10:
    for i in range(n):
         print("Datele nu corespund restricțiilor impuse.")
         num = int(input(f"Introduceti numarul {i+1}: "))
         return False
         nums.append(num)
    return nums


def validate_input(nums):
    # Verificăm dacă numerele din listă respectă restricțiile impuse
     for num in nums:
     for nr in lista:
         if num < 0 or num > 50:
         if not 0 <= nr <= 50:
             print("Numerele trebuie sa fie cuprinse intre 0 si 50.")
             print("Datele nu corespund restricțiilor impuse.")
             return False
             return False
    # Toate validările au trecut
    print("Datele sunt introduse corect.")
     return True
     return True


def calculate_geometric_mean(nums):
    product = 1
    for num in nums:
        product *= num
    geometric_mean = product ** (1/len(nums))
    return geometric_mean


def main():
def media_geometrica(n, lista):
     nums = read_input()
     produs = 1
     if not validate_input(nums):
    for nr in lista:
         return
        produs *= nr
    geometric_mean = calculate_geometric_mean(nums)
    return produs ** (1 / n)
    print(f"Media geometrica este: {geometric_mean:.2f}")
 
 
if __name__ == '__main__':
    n = int(input())
    lista = list(map(int, input().split()))
     if validare(n, lista):
         media = media_geometrica(n, lista)
        print(int(media))


if __name__ == "__main__":
    main()
</syntaxhighlight>
</syntaxhighlight>
==Explicatie cod==
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()).

Latest revision as of 17:52, 29 June 2023

Cerinta[edit | edit source]

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

Date de intrare[edit | edit source]

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

Date de ieșire[edit | edit source]

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

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

Intrare

4
2 4 2 1

Ieșire

Datele sunt introduse corect.
2

Explicație[edit | edit source]

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

Rezolvare[edit | edit source]

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

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()).