0277 - Vârfuri: Difference between revisions

From Bitnami MediaWiki
Dragos1234 (talk | contribs)
No edit summary
Line 39: Line 39:
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
#0277
#0277
def validate_input(n, a):
def validate_input(n, elemente):
     if not 1 <= n <= 1000:
     if not 1 <= n <= 1000:
         print("Numarul de elemente trebuie sa fie intre 1 si 1000.")
         print("Numarul de elemente trebuie sa fie intre 1 si 1000.")
         return False
         return False
     for x in a:
     for x in elemente:
         if not 0 <= x <= 9999:
         if not 0 <= x <= 9999:
             print("Toate elementele trebuie sa aiba cel mult 4 cifre.")
             print("Toate elementele trebuie sa aiba cel mult 4 cifre.")
Line 50: Line 50:




def calculate_sum_of_peaks(n, a):
def calculate_sum_of_peaks(n, elemente):
     suma = 0
     suma = 0
     for i in range(1, n-1):
     for i in range(1, n-1):
         if a[i] > a[i-1] and a[i] > a[i+1]:
         if elemente[i] > elemente[i - 1] and elemente[i] > elemente[i + 1]:
             suma += a[i]
             suma += elemente[i]
     return suma
     return suma


Line 60: Line 60:
if __name__ == '__main__':
if __name__ == '__main__':
     n = int(input("Introduceti numarul de elemente: "))
     n = int(input("Introduceti numarul de elemente: "))
     a = list(map(int, input("Introduceti elementele separate prin spatiu: ").split()))
     elemente = list(map(int, input("Introduceti elementele separate prin spatiu: ").split()))


     if validate_input(n, a):
     if validate_input(n, elemente):
         suma = calculate_sum_of_peaks(n, a)
         suma = calculate_sum_of_peaks(n, elemente)
         print("Suma elementelor care sunt varfuri este:", suma)
         print("Suma elementelor care sunt varfuri este:", suma)




</syntaxhighlight>
</syntaxhighlight>

Revision as of 13:31, 26 March 2023

Sursa: [1]

Cerinţa

Într-un şir de numere naturale se numeşte vârf un element care are doi vecini şi este strict mai mare decât aceştia.

Se dă un şir cu n elemente, numere naturale. Calculaţi suma elementelor din şir care sunt vârfuri.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi cele n numere naturale, separate prin spaţii.

Date de ieșire

Acest program primește un număr întreg n și o listă a cu n elemente întregi. Scopul său este de a calcula suma elementelor din lista a care sunt considerate a fi vârfuri. Un vârf este definit ca fiind un element care este strict mai mare decât ambele elemente adiacente la el.

În primul rând, funcția validate_input verifică dacă numărul de elemente este între 1 și 1000 și dacă fiecare element din listă are cel mult 4 cifre. Dacă aceste condiții nu sunt îndeplinite, funcția returnează False, ceea ce înseamnă că programul nu poate continua și se afișează un mesaj de eroare corespunzător.

În caz contrar, funcția calculate_sum_of_peaks este apelată cu numărul de elemente și lista verificate anterior ca argumente. Această funcție parcurge lista și verifică dacă fiecare element este un vârf, adică dacă elementul este mai mare decât elementele adiacente. Dacă da, atunci elementul este adăugat la suma.

La sfârșit, suma este afișată.

Restricţii şi precizări

  • 1 ⩽ n ⩽ 1000
  • cele n numere citite vor avea cel mult 4 cifre.

Exemplul 1

Intrare
Introduceti numarul de elemente: 7
Ieșire
Introduceti elementele separate prin spatiu: 3 8 4 4 1 9 1
Suma elementelor care sunt varfuri este: 17


Exemplul 2

Intrare
Introduceti numarul de elemente: 0
Ieșire
Numarul de elemente trebuie sa fie intre 1 si 1000.


Rezolvare

<syntaxhighlight lang="python" line>

  1. 0277

def validate_input(n, elemente):

   if not 1 <= n <= 1000:
       print("Numarul de elemente trebuie sa fie intre 1 si 1000.")
       return False
   for x in elemente:
       if not 0 <= x <= 9999:
           print("Toate elementele trebuie sa aiba cel mult 4 cifre.")
           return False
   return True


def calculate_sum_of_peaks(n, elemente):

   suma = 0
   for i in range(1, n-1):
       if elemente[i] > elemente[i - 1] and elemente[i] > elemente[i + 1]:
           suma += elemente[i]
   return suma


if __name__ == '__main__':

   n = int(input("Introduceti numarul de elemente: "))
   elemente = list(map(int, input("Introduceti elementele separate prin spatiu: ").split()))
   if validate_input(n, elemente):
       suma = calculate_sum_of_peaks(n, elemente)
       print("Suma elementelor care sunt varfuri este:", suma)


</syntaxhighlight>