2299 - Media Geometrica: Diferență între versiuni

De la Universitas MediaWiki
Fără descriere a modificării
 
(Nu s-au afișat 6 versiuni intermediare efectuate de alți 2 utilizatori)
Linia 6: Linia 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 ==
Linia 15: Linia 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 ==
Linia 26: Linia 27:
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line="1">
<syntaxhighlight lang="python" line="1">
def validare(n, numere):
def validare(n, lista):
     if n <= 1:
    # Verificăm dacă numărul n respectă restricțiile impuse
         print("Numărul n trebuie să fie mai mare decât 1!")
     if not 1 < n <= 10:
         print("Datele nu corespund restricțiilor impuse.")
         return False
         return False
     if len(numere) != n:
 
        print("Trebuie să introduceți exact {} numere!".format(n))
     # Verificăm dacă numerele din listă respectă restricțiile impuse
        return False
     for nr in lista:
     for nr in numere:
         if not 0 <= nr <= 50:
         if nr < 0 or nr > 50:
             print("Datele nu corespund restricțiilor impuse.")
             print("Numerele trebuie să fie cuprinse între 0 și 50!")
             return False
             return False
    # Toate validările au trecut
    print("Datele sunt introduse corect.")
     return True
     return True




def rezolvare(n, numere):
def media_geometrica(n, lista):
     produs = 1
     produs = 1
     for nr in numere:
     for nr in lista:
         produs *= nr
         produs *= nr
     media_geometrica = produs ** (1/n)
     return produs ** (1 / n)
    return media_geometrica




def main():
if __name__ == '__main__':
     n = int(input("Introduceți numărul n: "))
     n = int(input())
     numere = []
     lista = list(map(int, input().split()))
    for i in range(n):
     if validare(n, lista):
        numar = int(input("Introduceți numărul {}:".format(i+1)))
         media = media_geometrica(n, lista)
        numere.append(numar)
         print(int(media))
 
     if validare(n, numere):
         media = rezolvare(n, numere)
         print("Media geometrică este: {:.2f}".format(media))
 


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


== Date de intrare ==
==Explicatie cod==
Programul citește de la tastatură numărul natural <span style="color: red;"> n </span>, apoi <span style="color: red;"> n </span> numere naturale.
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.
== Date de ieșire ==
Î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.
Programul va afișa pe ecran media geometrică a celor <span style="color: red;"> n </span> numere.
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.
== Restricții și precizări ==
Funcția media_geometrica(n, lista):
<span style="color: red;"> 1 < n ≤ 10 </span>
Această funcție primește aceiași doi parametri, n și lista, ca și funcția validare.
numerele citite vor fi cuprinse între <span style="color: red;"> 0 </span> și <span style="color: red;"> 50 </span>.
Funcția calculează media geometrică a numerelor din lista. Inițial, se inițializează o variabilă produs cu valoarea 1.
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>.
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.
== Exemplu ==
Funcția returnează valoarea mediei geometrice.
Intrare
În cadrul secțiunii if __name__ == '__main__': se realizează următoarele acțiuni:
4
2 4 2 1
 
Ieșire
2


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

Versiunea curentă din 29 iunie 2023 17:52

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

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

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

Datele sunt introduse corect.
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(int(media))

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