0335 - Expresie3: Difference between revisions
Dragos1234 (talk | contribs) Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/4272/prodpare] == Cerinţa == Să se scrie un program care citește numărul natural n și determină suma '''S=1*2-2*3+3*4-...±n*(n+1)'''. == Date de intrare == Programul citește de la tastatură numărul '''n'''. == Date de iesire == Programul afișează pe ecran mesajul Rezultatul este '''S''', unde '''S''' reprezintă valoarea calculată. == Restricţii şi precizări == * 0 ⩽ '''n''' ⩽ 100 == Exemplu == === Exemplul 1 ===... |
Dragos1234 (talk | contribs) |
||
(20 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Sursa: [https://www.pbinfo.ro/probleme/ | Sursa: [https://www.pbinfo.ro/probleme/335/expresie3] | ||
== Cerinţa == | == Cerinţa == | ||
Să se scrie un program care citește numărul natural n și determină suma '''S=1*2-2*3+3*4-...±n*(n+1)'''. | Să se scrie un program care citește numărul natural n și determină suma '''S=1*2-2*3+3*4-...±n*(n+1)'''. | ||
Line 5: | Line 5: | ||
Programul citește de la tastatură numărul '''n'''. | Programul citește de la tastatură numărul '''n'''. | ||
== Date de iesire == | == Date de iesire == | ||
Programul afișează | Programul afișează în consolă mesajul "Datele introduse corespund cerintelor", unde '''S''' reprezintă valoarea calculată. În caz contrar programul va afișa "Datele introduse nu corespund cerințelor." | ||
== Restricţii şi precizări == | == Restricţii şi precizări == | ||
* 0 & | * 0 < '''n''' ⩽ 100 | ||
== Exemplu == | == Exemplu == | ||
Line 14: | Line 15: | ||
: 4 | : 4 | ||
; Ieșire | ; Ieșire | ||
: Datele introduse corespund cerintelor. | |||
: -12 | : -12 | ||
=== Exemplul 2 === | === Exemplul 2 === | ||
; Intrare | ; Intrare | ||
: 101 | : 101 | ||
; Ieșire | ; Ieșire | ||
: Datele nu corespund | : Datele introduse nu corespund cerintelor. | ||
=== Exemplul 3 === | === Exemplul 3 === | ||
; Intrare | ; Intrare | ||
: 8 | : 8 | ||
; Ieșire | ; Ieșire | ||
: | : Datele introduse corespund cerintelor. | ||
: 40 | |||
=== Rezolvare === | === Rezolvare === | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
Line 30: | Line 36: | ||
#0335 | #0335 | ||
def expresie_3(n): | def expresie_3(n): | ||
expresie = 0 | |||
semn = 1 | semn = 1 | ||
for i in range(1, n + 1): | for i in range(1, n + 1): | ||
expresie += semn * i * (i + 1) | |||
semn *= -1 | semn *= -1 | ||
print( | print("Datele introduse corespund cerintelor.") | ||
print(expresie) | |||
def validare_numar(n): | |||
if not isinstance(n, int): | |||
print("Datele introduse nu corespund cerintelor.") | |||
return False | |||
elif n < 0 or n > 100: | |||
print("Datele introduse nu corespund cerintelor.") | |||
return False | |||
else: | |||
return True | |||
if __name__ == "__main__": | if __name__ == "__main__": | ||
numar = int( | numar = input("Introduceti un numar: ") | ||
try: | |||
numar = int(numar) | |||
if validare_numar(numar): | |||
expresie_3(numar) | |||
except ValueError: | |||
print("Datele introduse nu corespund cerintelor.") | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== Explicatie rezolvare == | |||
Acest program este o implementare a unei funcții numite expresie_3, care primește un argument de tip întreg n. Funcția calculează o expresie matematică și o afișează. | |||
Expresia matematică este calculată prin intermediul unui ciclu for care parcurge valorile de la 1 la n. În fiecare iterație, expresia este actualizată cu un termen format din produsul dintre semn, i și i+1. semn își schimbă valoarea între fiecare iterație, alternând între 1 și -1. | |||
Înainte de a apela funcția expresie_3, programul validează datele de intrare prin intermediul funcției validare_numar. Dacă datele introduse sunt de tipul întreg și se află în intervalul [0, 100], funcția expresie_3 este apelată cu acel argument. În caz contrar, programul afișează un mesaj de eroare. | |||
Programul folosește de asemenea clauza if __name__ == "__main__" pentru a se asigura că codul este executat doar dacă acesta este rulat ca program principal și nu importat ca modul într-un alt program. |
Latest revision as of 17:33, 30 April 2023
Sursa: [1]
Cerinţa[edit | edit source]
Să se scrie un program care citește numărul natural n și determină suma S=1*2-2*3+3*4-...±n*(n+1).
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n.
Date de iesire[edit | edit source]
Programul afișează în consolă mesajul "Datele introduse corespund cerintelor", unde S reprezintă valoarea calculată. În caz contrar programul va afișa "Datele introduse nu corespund cerințelor."
Restricţii şi precizări[edit | edit source]
- 0 < n ⩽ 100
Exemplu[edit | edit source]
Exemplul 1[edit | edit source]
- Intrare
- 4
- Ieșire
- Datele introduse corespund cerintelor.
- -12
Exemplul 2[edit | edit source]
- Intrare
- 101
- Ieșire
- Datele introduse nu corespund cerintelor.
Exemplul 3[edit | edit source]
- Intrare
- 8
- Ieșire
- Datele introduse corespund cerintelor.
- 40
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 0335
def expresie_3(n):
expresie = 0 semn = 1
for i in range(1, n + 1): expresie += semn * i * (i + 1) semn *= -1
print("Datele introduse corespund cerintelor.") print(expresie)
def validare_numar(n):
if not isinstance(n, int): print("Datele introduse nu corespund cerintelor.") return False elif n < 0 or n > 100: print("Datele introduse nu corespund cerintelor.") return False else: return True
if __name__ == "__main__":
numar = input("Introduceti un numar: ") try: numar = int(numar) if validare_numar(numar): expresie_3(numar) except ValueError: print("Datele introduse nu corespund cerintelor.")
</syntaxhighlight>
Explicatie rezolvare[edit | edit source]
Acest program este o implementare a unei funcții numite expresie_3, care primește un argument de tip întreg n. Funcția calculează o expresie matematică și o afișează.
Expresia matematică este calculată prin intermediul unui ciclu for care parcurge valorile de la 1 la n. În fiecare iterație, expresia este actualizată cu un termen format din produsul dintre semn, i și i+1. semn își schimbă valoarea între fiecare iterație, alternând între 1 și -1.
Înainte de a apela funcția expresie_3, programul validează datele de intrare prin intermediul funcției validare_numar. Dacă datele introduse sunt de tipul întreg și se află în intervalul [0, 100], funcția expresie_3 este apelată cu acel argument. În caz contrar, programul afișează un mesaj de eroare.
Programul folosește de asemenea clauza if __name__ == "__main__" pentru a se asigura că codul este executat doar dacă acesta este rulat ca program principal și nu importat ca modul într-un alt program.