2299 - Media Geometrica: Diferență între versiuni

De la Universitas MediaWiki
Linia 26: Linia 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>

Versiunea de la data 21 aprilie 2023 15:50

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

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