2948 - Media Patratica: Difference between revisions

From Bitnami MediaWiki
Paul Ungur (talk | contribs)
Paul Ungur (talk | contribs)
No edit summary
Line 22: Line 22:
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line="1">
<syntaxhighlight lang="python" line="1">
def validare_numar_intreg(mesaj):
def validare_date_intrare(n, nums):
     while True:
     if not 1 <= n <= 1000:
         try:
         print("Numărul n trebuie să fie între 1 și 1000!")
            n = int(input(mesaj))
        return False
            return n
    if len(nums) != n:
         except ValueError:
        print("Trebuie să introduceți exact {} numere!".format(n))
             print("Trebuie sa introduci un numar intreg. Incearca din nou.")
        return False
    for nr in nums:
         if not 1 <= nr <= 1000000:
             print("Numerele trebuie să fie cuprinse între 1 și 1.000.000!")
            return False
    print("Datele sunt introduse corect.")
    return True


def validare_lista_numere(mesaj, lungime):
    while True:
        try:
            nums = list(map(int, input(mesaj).split()))
            if len(nums) != lungime:
                raise ValueError
            for num in nums:
                if num < 0 or num > 1000000:
                    raise ValueError
            return nums
        except ValueError:
            print(f"Trebuie sa introduci exact {lungime} numere naturale mai mici decat 1.000.000. Incearca din nou.")


def media_patratica(nums):
def media_patratica(nums):
     suma_patrate = sum([num ** 2 for num in nums])
     suma_patrate = sum([num ** 2 for num in nums])
     media_patratica = (suma_patrate / len(nums)) ** 0.5
     media_patratica = (suma_patrate / len(nums)) ** 0.5
     return round(media_patratica, 2)
     print(round(media_patratica, 2))


def main():
    n = validare_numar_intreg("Introduceti numarul de numere: ")
    nums = validare_lista_numere(f"Introduceti cele {n} numere separate prin spatiu: ", n)
    rezultat = media_patratica(nums)
    print(f"Media patratica a celor {n} numere este {rezultat}.")


if __name__ == '__main__':
if __name__ == '__main__':
     main()
     n = int(input())
    nums = list(map(int, input().split()))
    if validare_date_intrare(n, nums):
        media_patratica(nums)
</syntaxhighlight>
</syntaxhighlight>

Revision as of 15:49, 26 April 2023

Cerința

Se dau n numere naturale. Calculați media pătratică a celor n numere citite cu 2 zecimale exacte.

Date de intrare

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

Date de ieșire

Programul va afișa pe ecran media pătratică a celor n numere cu 2 zecimale exacte.

Restricții și precizări

1 ≤ n ≤ 1000 cele n</span numere citite vor fi mai mici decât 1.000.000

Exemplu:

Intrare 5 1 2 3 4 5

Ieșire 3.31

Rezolvare

<syntaxhighlight lang="python" line="1"> def validare_date_intrare(n, nums):

   if not 1 <= n <= 1000:
       print("Numărul n trebuie să fie între 1 și 1000!")
       return False
   if len(nums) != n:
       print("Trebuie să introduceți exact {} numere!".format(n))
       return False
   for nr in nums:
       if not 1 <= nr <= 1000000:
           print("Numerele trebuie să fie cuprinse între 1 și 1.000.000!")
           return False
   print("Datele sunt introduse corect.")
   return True


def media_patratica(nums):

   suma_patrate = sum([num ** 2 for num in nums])
   media_patratica = (suma_patrate / len(nums)) ** 0.5
   print(round(media_patratica, 2))


if __name__ == '__main__':

   n = int(input())
   nums = list(map(int, input().split()))
   if validare_date_intrare(n, nums):
       media_patratica(nums)

</syntaxhighlight>