2299 - Media Geometrica: Difference between revisions

From Bitnami MediaWiki
Paul Ungur (talk | contribs)
Paul Ungur (talk | contribs)
Line 26: Line 26:
== 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
    # Verificăm dacă numerele din listă respectă restricțiile impuse
 
     for nr in lista:
def validate_input(nums):
         if not 0 <= nr <= 50:
     for num in nums:
             print("Datele nu corespund restricțiilor impuse.")
         if num < 0 or num > 50:
             print("Numerele trebuie sa fie cuprinse intre 0 si 50.")
             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(round(media, 2))


if __name__ == "__main__":
    main()
</syntaxhighlight>
</syntaxhighlight>

Revision as of 15:50, 21 April 2023

Cerinta

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

Date de intrare

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

Date de ieșire

Programul va afișa pe ecran media geometrică a celor n numere.

Restricții și precizări

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

Intrare 4 2 4 2 1

Ieșire 2

Explicație

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

Rezolvare

<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(round(media, 2))

</syntaxhighlight>