0487 - Numarare2: Difference between revisions

From Bitnami MediaWiki
 
(2 intermediate revisions by the same user not shown)
Line 26: Line 26:
; Intrare
; Intrare
: 1234
: 1234
: 1 2 3
; Ieșire
; Ieșire
: Datele nu corespund restricțiilor impuse.
: Datele nu corespund restricțiilor impuse.
<br>
<br>
== Rezolvare ==  
== Rezolvare ==  
<syntaxhighlight lang="python" line="1">
<syntaxhighlight lang="python" line="1">
# 0487 Numarare2
# 0487 Numarare2
def suma_elem_dintre_primul_elem_par_si_ultimul(vector, n):
 
     a, b = -1, -1
def nr_elem_cu_val_strict_mai_mare_decat_media_aritm(vector, n):
    for i in range(n):
     suma = sum(vector)
        if vector[i] % 2 == 0:
    medie = suma / n
            if a == -1:
     C = sum(1 for x in vector if x > medie)
                a = i
     print(C)
            b = i
     if a != -1:
        S = sum(vector[a:b + 1])
        print(S)
     else:
        print("Nu există niciun număr par.")




def citire_conform_restrictiilor():
def citire_conform_restrictiilor(vector, n):
    n = int(input())
     if n < 1 or n > 200:
     if n < 1 or n > 1000:
         print("Datele nu corespund restricțiilor impuse.")
         print("Datele nu corespund restricțiilor impuse.")
         exit()
         exit()
    vector = list(map(int, input().split()))
     for x in vector:
     for x in vector:
         if x >= 100000:
         if x < 0 or x > 1000:
             print("Datele nu corespund restricțiilor impuse.")
             print("Datele nu corespund restricțiilor impuse.")
             exit()
             exit()
Line 60: Line 54:
         exit()
         exit()
     print("Datele sunt introduse corect.")
     print("Datele sunt introduse corect.")
    return vector, n




if __name__ == '__main__':
if __name__ == '__main__':
     vector, n = citire_conform_restrictiilor()
    n = int(input())
     suma_elem_dintre_primul_elem_par_si_ultimul(vector, n)
     vector = list(map(int, input().split()))
    citire_conform_restrictiilor(vector, n)
     nr_elem_cu_val_strict_mai_mare_decat_media_aritm(vector, n)
 




Line 76: Line 72:


</syntaxhighlight>
</syntaxhighlight>
== Explicație rezolvare ==
    Programul de mai sus conține două funcții, funcția '''nr_elem_cu_val_strict_mai_mare_decat_media_aritm(vector, n)''' și funcția '''citire_conform_restrictiilor(vector, n)''', care se vor rula în interiorul main-ului ('''if __name__ == '__main__' ''', linia 24) după citirea numărului n (linia 25) și celor n numere pe care le vom pune în șirul „vector” (linia 26).<br>  După ce am citit elementele, se va apela '''funcția citire_conform_restrictiilor(vector, n)''' care primește doi parametri: vectorul „vector” și lungimea sa, reprezentată de variabila „n”. Funcția verifică dacă lungimea vectorului n este între 1 și 200 (linia 11), dacă elementele vectorului sunt cuprinse între 0 și 1000 (liniile 14, 15) și dacă n este lungimea vectorului „vector” (linia 18). Dacă oricare dintre condiții este încălcată, se va afișa mesajul „Datele nu corespund restricțiilor impuse.” și se va ieși din program cu comanda exit(). Dacă toate condițiile sunt respectate, se va afișa mesajul „Datele sunt introduse corect.” (linia 21) și se va continua programul.<br>  Dacă s-au introdus corect datele, se va apela funcția '''nr_elem_cu_val_strict_mai_mare_decat_media_aritm(vector, n)''' care primește ca parametrii vectorul „vector” și dimensiunea sa „n”. Funcția începe prin a calcula suma tuturor elementelor din vector folosind funcția predefinită sum() (linia 4), și o stochează în variabila suma, apoi într-o altă variabilă medie calculează media aritmetică a elementelor din vector împărțind suma calculată anterior la lungimea vectorului (n) și o stochează în variabila medie. Folosind o expresie generator (sum(1 for x in vector if x > medie)), parcurgem vectorul și pentru fiecare element care are o valoare mai mare sau egală cu media aritmetică, adăugăm 1 la valoarea lui C (variabilă denumită conform problemei). Expresia generator calculează efectiv numărul de elemente care satisfac condiția dată, conform problemei, apoi afișează valoarea lui C pe ecran.

Latest revision as of 07:48, 22 April 2023

Sursa: - Numarare2


Cerinţa[edit | edit source]

Se dă un vector cu n numere naturale. Să se determine câte dintre elemente au valoarea strict mai mare decât media aritmetică a elementelor vectorului.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n, iar apoi n numere naturale, reprezentând elementele vectorului.

Date de ieșire[edit | edit source]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou va afișa numărul C, reprezentând valoarea cerută. În caz contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse.".

Restricţii şi precizări[edit | edit source]

  • 1 ⩽ n ⩽ 200
  • elementele vectorului vor fi cuprinse între 0 și 1.000

Exemple[edit | edit source]

Exemplul 1[edit | edit source]

Intrare
5
5 0 2 1 4
Ieșire
Datele sunt introduse corect.
2

Explicație exemplul 1[edit | edit source]

Media aritmetică a elementelor este 2.4. În vector sunt 2 elemente cu valoarea strict mai mare decât 2.4: 5 4

Exemplul 2[edit | edit source]

Intrare
1234
1 2 3
Ieșire
Datele nu corespund restricțiilor impuse.


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1">

  1. 0487 Numarare2

def nr_elem_cu_val_strict_mai_mare_decat_media_aritm(vector, n):

   suma = sum(vector)
   medie = suma / n
   C = sum(1 for x in vector if x > medie)
   print(C)


def citire_conform_restrictiilor(vector, n):

   if n < 1 or n > 200:
       print("Datele nu corespund restricțiilor impuse.")
       exit()
   for x in vector:
       if x < 0 or x > 1000:
           print("Datele nu corespund restricțiilor impuse.")
           exit()
   if n != len(vector):
       print("Datele nu corespund restricțiilor impuse.")
       exit()
   print("Datele sunt introduse corect.")


if __name__ == '__main__':

   n = int(input())
   vector = list(map(int, input().split()))
   citire_conform_restrictiilor(vector, n)
   nr_elem_cu_val_strict_mai_mare_decat_media_aritm(vector, n)






</syntaxhighlight>

Explicație rezolvare[edit | edit source]

   Programul de mai sus conține două funcții, funcția nr_elem_cu_val_strict_mai_mare_decat_media_aritm(vector, n) și funcția citire_conform_restrictiilor(vector, n), care se vor rula în interiorul main-ului (if __name__ == '__main__' , linia 24) după citirea numărului n (linia 25) și celor n numere pe care le vom pune în șirul „vector” (linia 26).
După ce am citit elementele, se va apela funcția citire_conform_restrictiilor(vector, n) care primește doi parametri: vectorul „vector” și lungimea sa, reprezentată de variabila „n”. Funcția verifică dacă lungimea vectorului n este între 1 și 200 (linia 11), dacă elementele vectorului sunt cuprinse între 0 și 1000 (liniile 14, 15) și dacă n este lungimea vectorului „vector” (linia 18). Dacă oricare dintre condiții este încălcată, se va afișa mesajul „Datele nu corespund restricțiilor impuse.” și se va ieși din program cu comanda exit(). Dacă toate condițiile sunt respectate, se va afișa mesajul „Datele sunt introduse corect.” (linia 21) și se va continua programul.
Dacă s-au introdus corect datele, se va apela funcția nr_elem_cu_val_strict_mai_mare_decat_media_aritm(vector, n) care primește ca parametrii vectorul „vector” și dimensiunea sa „n”. Funcția începe prin a calcula suma tuturor elementelor din vector folosind funcția predefinită sum() (linia 4), și o stochează în variabila suma, apoi într-o altă variabilă medie calculează media aritmetică a elementelor din vector împărțind suma calculată anterior la lungimea vectorului (n) și o stochează în variabila medie. Folosind o expresie generator (sum(1 for x in vector if x > medie)), parcurgem vectorul și pentru fiecare element care are o valoare mai mare sau egală cu media aritmetică, adăugăm 1 la valoarea lui C (variabilă denumită conform problemei). Expresia generator calculează efectiv numărul de elemente care satisfac condiția dată, conform problemei, apoi afișează valoarea lui C pe ecran.