0115 - Medie: Difference between revisions

From Bitnami MediaWiki
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...
 
Paul Ungur (talk | contribs)
No edit summary
Line 24: Line 24:
==Rezolvare==
==Rezolvare==
<syntaxhighlight lang="python" line>  
<syntaxhighlight lang="python" line>  
def validare_n(n):
def validare_date(n, numere):
     if not 0 < n < 1000:
     if n < 1 or n > 999:
        print("Eroare: n trebuie sa fie intre 1 si 999!")
         return False
         return False
    for numar in numere:
        if numar < 0 or numar > 1_000_000:
            return False
     return True
     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):
def suma_numerelor_pare(numere):
     suma = 0
     suma = 0
     contor = 0
     cate_pare = 0
     for numar in lista:
     for numar in numere:
         if numar % 2 == 0:
         if numar % 2 == 0:
             suma += numar
             suma += numar
             contor += 1
             cate_pare += 1
     if contor == 0:
     return suma, cate_pare
        return 0
 
     return suma / contor
 
def medie(numere):
    suma, cate_pare = suma_numerelor_pare(numere)
     medie = suma / cate_pare
    print(medie)


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__':
if __name__ == '__main__':
     main()
     n = int(input())
    numere = list(map(int, input().split()))
    if validare_date(n, numere):
        print("Date de intrare valide")
        medie(numere)
    else:
        print("Date de intrare invalide")
  </syntaxhighlight>
  </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.

Revision as of 16:07, 26 April 2023

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_date(n, numere):

   if n < 1 or n > 999:
       return False
   for numar in numere:
       if numar < 0 or numar > 1_000_000:
           return False
   return True


def suma_numerelor_pare(numere):

   suma = 0
   cate_pare = 0
   for numar in numere:
       if numar % 2 == 0:
           suma += numar
           cate_pare += 1
   return suma, cate_pare


def medie(numere):

   suma, cate_pare = suma_numerelor_pare(numere)
   medie = suma / cate_pare
   print(medie)


if __name__ == '__main__':

   n = int(input())
   numere = list(map(int, input().split()))
   if validare_date(n, numere):
       print("Date de intrare valide")
       medie(numere)
   else:
       print("Date de intrare invalide")
</syntaxhighlight>