0115 - Medie

From Bitnami MediaWiki
Revision as of 08:31, 22 April 2023 by Paul Ungur (talk | contribs) (Pagină nouă: ==Cerinţa== Să se scrie un program care citeşte de la tastatură un număr natural <span style=“color: red”> n</span> şi apoi un şir de <span style=“color: red”> n<span> numere naturale şi determină media aritmetică a celor pare. ==Date de intrare== Programul citește de la tastatură numărul <span style=“color: red”> n</span>, iar apoi <span style=“color: red”> n</span> numere naturale. ==Date de ieşire== Programul afișează pe ecran numărul <sp...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinţa

Să se scrie un program care citeşte de la tastatură un număr natural n şi apoi un şir de n numere naturale şi determină media aritmetică a celor pare.

Date de intrare

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

Date de ieşire

Programul afișează pe ecran numărul M, reprezentând media aritmetică a valorilor pare.

Restricţii şi precizări

0 < n < 1000 cele n numere citite vor fi mai mici decât 1.000.000 rezultatul va fi punctat dacă diferența dintre cel afișat de program și cel corect este mai mică decât 0.01. în toate seturile de date de intrare se vor afla şi valori pare

Exemplu:

Intrare 5 8 7 8 9 10

Ieșire 8.66

Rezolvare

<syntaxhighlight lang="python" line> def validare_n(n):

   if not 0 < n < 1000:
       print("Eroare: n trebuie sa fie intre 1 si 999!")
       return False
   return True

def validare_numar(numar):

   if not 0 <= numar < 1000000:
       print("Eroare: numarul trebuie sa fie mai mic decat 1.000.000!")
       return False
   return True

def citire_lista(n):

   lista = []
   for i in range(n):
       numar = int(input(f"Introduceti numarul {i+1}: "))
       if not validare_numar(numar):
           return []
       lista.append(numar)
   return lista

def media_aritmetica_pare(lista):

   suma = 0
   contor = 0
   for numar in lista:
       if numar % 2 == 0:
           suma += numar
           contor += 1
   if contor == 0:
       return 0
   return suma / contor

def main():

   n = int(input("Introduceti numarul n: "))
   if not validare_n(n):
       return
   lista = citire_lista(n)
   if len(lista) == 0:
       return
   media = media_aritmetica_pare(lista)
   print(f"Media aritmetica a numerelor pare este: {media:.2f}")

if __name__ == '__main__':

   main()
</syntaxhighlight>

Explicatie

Programul începe prin definirea a trei funcții de validare: validare_n(n) verifică dacă numărul n respectă restricțiile impuse, adică să fie între 1 și 999, iar validare_numar(numar) verifică dacă un număr citit de la tastatură este mai mic decât 1.000.000. citire_lista(n) primește numărul n de la tastatură și citește o listă de n numere naturale. Funcția media_aritmetica_pare(lista) calculează media aritmetică a numerelor pare din lista primită ca argument. Funcția main() este funcția principală care citește numărul n, validează datele de intrare și apelează funcțiile de citire și calculare pentru a afișa rezultatul final.

Pentru a verifica diferența dintre valoarea afișată și valoarea corectă, am folosit formatarea de string-uri prin utilizarea funcției format() și a sintaxei :.2f, care trunchiază rezultatul la două zecimale.