0277 - Vârfuri: Difference between revisions
Dragos1234 (talk | contribs) |
Dragos1234 (talk | contribs) |
||
(11 intermediate revisions by 2 users not shown) | |||
Line 9: | Line 9: | ||
== Date de ieșire == | == Date de ieșire == | ||
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele introduse corespund cerintelor", apoi pe un rand nou programul afișează pe ecran numărul S, reprezentând suma elementelor din şir care sunt vârfuri. În caz contrar, se va afișa mesajul: "Datele introduse nu corespund cerintelor." | |||
== Restricţii şi precizări == | == Restricţii şi precizări == | ||
Line 17: | Line 17: | ||
== Exemplul 1 == | == Exemplul 1 == | ||
; Intrare | ; Intrare | ||
: 4 | : Introduceti numarul de elemente: 7 | ||
: Introduceti elementele separate prin spatiu: 3 8 4 4 1 9 1 | |||
; Ieșire | ; Ieșire | ||
: Datele corespund | : Datele introduse corespund cerintelor. | ||
: | : 17 | ||
<br> | <br> | ||
== Exemplul 2 == | == Exemplul 2 == | ||
; Intrare | ; Intrare | ||
: | : Introduceti numarul de elemente: 0 | ||
; Ieșire | ; Ieșire | ||
: Datele introduse nu corespund | : Datele introduse nu corespund cerintelor. | ||
<br> | <br> | ||
Line 40: | Line 34: | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
#0277 | #0277 | ||
def validate_input(n, | def validate_input(n, elemente): | ||
if not 1 <= n <= 1000: | if not 1 <= n <= 1000: | ||
print(" | print("Datele introduse nu corespund cerintelor.") | ||
return False | return False | ||
for x in | for x in elemente: | ||
if not 0 <= x <= 9999: | if not 0 <= x <= 9999: | ||
print(" | print("Datele introduse nu corespund cerintelor.") | ||
return False | return False | ||
return True | return True | ||
def calculate_sum_of_peaks(n, | 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 | if elemente[i] > elemente[i - 1] and elemente[i] > elemente[i + 1]: | ||
suma += | suma += elemente[i] | ||
return suma | return suma | ||
Line 61: | Line 55: | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
n = int(input("Introduceti numarul de elemente: ")) | 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("Datele introduse corespund cerintelor.\n",suma) | |||
</syntaxhighlight> | |||
==Explicatie rezolvare== | |||
Acest program calculează suma elementelor dintr-o listă care sunt considerate "vârfuri", adică elemente care sunt mai mari decât elementele din dreapta și stânga lor. | |||
În funcția `validate_input()`, se verifică dacă numărul de elemente este între 1 și 1000 și dacă toate elementele din listă au cel mult 4 cifre. În caz contrar, se afișează un mesaj de eroare și se returnează False. | |||
În funcția `calculate_sum_of_peaks()`, se iterează prin elementele listei și se verifică dacă un element este mai mare decât elementele din stânga și din dreapta. Dacă este, atunci se adaugă la suma totală. | |||
În funcția principală, se citesc numărul de elemente și elementele în sine de la tastatură și se verifică dacă acestea sunt valide folosind funcția `validate_input()`. Dacă sunt valide, se calculează suma vârfurilor utilizând funcția `calculate_sum_of_peaks()` și se afișează rezultatul. |
Latest revision as of 17:11, 26 April 2023
Sursa: [1]
Cerinţa[edit | edit source]
Î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[edit | edit source]
Programul citește de la tastatură numărul n, iar apoi cele n numere naturale, separate prin spaţii.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele introduse corespund cerintelor", apoi pe un rand nou programul afișează pe ecran numărul S, reprezentând suma elementelor din şir care sunt vârfuri. În caz contrar, se va afișa mesajul: "Datele introduse nu corespund cerintelor."
Restricţii şi precizări[edit | edit source]
- 1 ⩽ n ⩽ 1000
- cele n numere citite vor avea cel mult 4 cifre.
Exemplul 1[edit | edit source]
- Intrare
- Introduceti numarul de elemente: 7
- Introduceti elementele separate prin spatiu: 3 8 4 4 1 9 1
- Ieșire
- Datele introduse corespund cerintelor.
- 17
Exemplul 2[edit | edit source]
- Intrare
- Introduceti numarul de elemente: 0
- Ieșire
- Datele introduse nu corespund cerintelor.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 0277
def validate_input(n, elemente):
if not 1 <= n <= 1000: print("Datele introduse nu corespund cerintelor.") return False for x in elemente: if not 0 <= x <= 9999: print("Datele introduse nu corespund cerintelor.") 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("Datele introduse corespund cerintelor.\n",suma)
</syntaxhighlight>
Explicatie rezolvare[edit | edit source]
Acest program calculează suma elementelor dintr-o listă care sunt considerate "vârfuri", adică elemente care sunt mai mari decât elementele din dreapta și stânga lor.
În funcția `validate_input()`, se verifică dacă numărul de elemente este între 1 și 1000 și dacă toate elementele din listă au cel mult 4 cifre. În caz contrar, se afișează un mesaj de eroare și se returnează False.
În funcția `calculate_sum_of_peaks()`, se iterează prin elementele listei și se verifică dacă un element este mai mare decât elementele din stânga și din dreapta. Dacă este, atunci se adaugă la suma totală.
În funcția principală, se citesc numărul de elemente și elementele în sine de la tastatură și se verifică dacă acestea sunt valide folosind funcția `validate_input()`. Dacă sunt valide, se calculează suma vârfurilor utilizând funcția `calculate_sum_of_peaks()` și se afișează rezultatul.