0116 - Medie Prime: Diferență între versiuni

De la Universitas MediaWiki
(Pagină nouă: == Cerinţa == Să se scrie un program care citeşte de la tastatură un număr natural '''numar''' şi apoi un şir de '''n''' numere naturale şi determină media aritmetică a celor prime. == Date de intrare == Programul citește de la tastatură numărul '''numar''', iar apoi '''n''' numere naturale.. == Date de ieşire == Programul afișează pe ecran numărul M, reprezentând media aritmetică a valorilor prime. == Restricții și precizări == * numar ∈ Ν * 0 &...)
 
Linia 21: Linia 21:
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
def validare_date_numar(numar):
def validare_date_numar(numar):
    flag = False
     if numar.isdigit():
     if numar.isdigit():
         if 0 <= int(numar) <= 1000:
         if 0 <= int(numar) <= 1000:
             flag = True
             return True
     return flag
     return False
 


def validare_date_numere(n):
def validare_date_numere(n):
     flag = False
     if n.isdigit():
    if 0 <= int(n) <= 10000:
        if 0 <= int(n) <= 10000:
        flag = True
            return True
     return flag
     return False


def is_prime(numar):
def is_prime(numar):
Linia 50: Linia 48:


if __name__ == "__main__":
if __name__ == "__main__":
     n = int(input("Introduceti numarul de elemente: "))
     n = input("Introduceti numarul de elemente: ")
    numere = list(map(int, input("Introduceti numerele separate prin spatiu: ").split()))
    if validare_date_numere(n):
    result = avg_prime(numere)
        print("Datele de intrare corespund restricțiilor impuse.")
    if result is not None:
        numere = list(map(int, input("Introduceti numerele: ").split()))
        print("Media aritmetica a numerelor prime din lista este:", result)
        if validare_date_numere(str(len(numere))):
            print("Datele de intrare corespund restricțiilor impuse.")
            result = avg_prime(numere)
            if result is not None:
                print("Media aritmetica a numerelor prime din lista este:", result)
            else:
                print("Nu exista numere prime in lista!")
        else:
            print("Numarul de numere introdus nu corespunde cu numarul specificat anterior.")
     else:
     else:
         print("Nu exista numere prime in lista!")
         print("Numarul de elemente introdus nu corespunde cu restrictiile impuse.")


</syntaxhighlight>
</syntaxhighlight>

Versiunea de la data 19 martie 2023 20:20

Cerinţa

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

Date de intrare

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

Date de ieşire

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

Restricții și precizări

  • numar ∈ Ν
  • 0 ⩽ n ⩽ 1.000
  • cele n numere citite vor fi mai mici decât 10000;
  • rezultatul se va afişa cu cel puțin două zecimale exacte;
  • în toate testele, printre cele n numere va exista cel puțin un număr prim.

Exemplu

Intrare
5
8 7 5 9 11
Ieșire
Datele introduse corespund restricțiilor impuse.
7.66

Rezolvare

def validare_date_numar(numar):
    if numar.isdigit():
        if 0 <= int(numar) <= 1000:
            return True
    return False

def validare_date_numere(n):
    if n.isdigit():
        if 0 <= int(n) <= 10000:
            return True
    return False

def is_prime(numar):
    if numar < 2:
        return False
    for i in range(2, int(numar ** 0.5) + 1):
        if numar % i == 0:
            return False
    return True

def avg_prime(numere):
    prime_numere = [numar for numar in numere if is_prime(numar)]
    if len(prime_numere) > 0:
        return sum(prime_numere) / len(prime_numere)
    else:
        return None

if __name__ == "__main__":
    n = input("Introduceti numarul de elemente: ")
    if validare_date_numere(n):
        print("Datele de intrare corespund restricțiilor impuse.")
        numere = list(map(int, input("Introduceti numerele: ").split()))
        if validare_date_numere(str(len(numere))):
            print("Datele de intrare corespund restricțiilor impuse.")
            result = avg_prime(numere)
            if result is not None:
                print("Media aritmetica a numerelor prime din lista este:", result)
            else:
                print("Nu exista numere prime in lista!")
        else:
            print("Numarul de numere introdus nu corespunde cu numarul specificat anterior.")
    else:
        print("Numarul de elemente introdus nu corespunde cu restrictiile impuse.")