0050 - Expresie: Diferență între versiuni

De la Universitas MediaWiki
(Pagină nouă: == Cerinţa == Să se scrie un program care citește numărul natural n și determină suma '''S=1+1*2+1*2*3+...+1*2*...*n'''. == Date de intrare == Programul citește de la tastatură numărul '''n'''. == Date de ieșire == Programul afișează pe prima linie a ecranului mesajul Rezultatul este S, unde S reprezintă suma calculată, în caz contrar programul va afișa "Datele introduse nu corespund cerintelor". == Restricţii şi precizări == * 0 < '''n''' ⩽ 15 == E...)
 
 
(Nu s-au afișat 8 versiuni intermediare efectuate de alți 2 utilizatori)
Linia 1: Linia 1:
Sursa: [https://www.pbinfo.ro/probleme/50/expresie]
== Cerinţa ==
== Cerinţa ==
Să se scrie un program care citește numărul natural n și determină suma '''S=1+1*2+1*2*3+...+1*2*...*n'''.
Să se scrie un program care citește numărul natural n și determină suma '''S=1+1*2+1*2*3+...+1*2*...*n'''.
Linia 4: Linia 5:
Programul citește de la tastatură numărul '''n'''.
Programul citește de la tastatură numărul '''n'''.
== Date de ieșire ==  
== Date de ieșire ==  
Programul afișează pe prima linie a ecranului mesajul Rezultatul este S, unde S reprezintă suma calculată, în caz contrar programul va afișa "Datele introduse nu corespund cerintelor".
Programul afișează pe prima linie a ecranului mesajul '''Rezultatul este S''' și mesajul "Datele introduse corespund cerințelor", unde '''S''' reprezintă suma calculată, în caz contrar programul va afișa pe o linie noua mesajul "Datele introduse nu corespund cerintelor".
 
== Restricţii şi precizări ==
== Restricţii şi precizări ==
* 0 &lt; '''n''' &les; 15
* 0 &lt; '''n''' &les; 15
Linia 11: Linia 13:
: 4
: 4
; Ieșire
; Ieșire
: Datele introduse corespund cerințelor
: Rezultatul este 33
: Rezultatul este 33
<br>
<br>
== Exemplul 2 ==
== Exemplul 2 ==
; Intrare
; Intrare
Linia 23: Linia 27:
: 6
: 6
; Ieșire
; Ieșire
: Datele introduse corespund cerințelor.
: Rezultatul este 873
: Rezultatul este 873
<br>
<br>
Linia 35: Linia 40:
         produs *= i
         produs *= i
     return produs
     return produs


def calculeaza_suma(n):
def calculeaza_suma(n):
Linia 43: Linia 49:
         suma += produs
         suma += produs
     return suma
     return suma


def valideaza_n(n):
def valideaza_n(n):
Linia 57: Linia 64:


     rezultat = calculeaza_suma(n)
     rezultat = calculeaza_suma(n)
    print("Datele introduse corespund cerintelor.")
     print("Rezultatul este", rezultat)
     print("Rezultatul este", rezultat)


</syntaxhighlight>
</syntaxhighlight>
== Explicatie rezolvare ==
Acest program calculează suma 1 + 1*2 + 1*2*3 + ... + 1*2*...n, unde n este un număr întreg între 1 și 15. Funcția calculeaza_produs(k) calculează produsul 1*2*...*k, iar funcția calculeaza_suma(n) calculează suma produselor de la 1 la n. Funcția valideaza_n(n) validează datele de intrare, verificând dacă numărul este întreg și se încadrează în intervalul specificat. Dacă numărul introdus de utilizator nu respectă cerințele, se afișează un mesaj corespunzător și se cere un nou număr.

Versiunea curentă din 9 aprilie 2023 13:04

Sursa: [1]

Cerinţa

Să se scrie un program care citește numărul natural n și determină suma S=1+1*2+1*2*3+...+1*2*...*n.

Date de intrare

Programul citește de la tastatură numărul n.

Date de ieșire

Programul afișează pe prima linie a ecranului mesajul Rezultatul este S și mesajul "Datele introduse corespund cerințelor", unde S reprezintă suma calculată, în caz contrar programul va afișa pe o linie noua mesajul "Datele introduse nu corespund cerintelor".

Restricţii şi precizări

  • 0 < n ⩽ 15

Exemplul 1

Intrare
4
Ieșire
Datele introduse corespund cerințelor
Rezultatul este 33


Exemplul 2

Intrare
0
Ieșire
Datele introduse nu corespund cerințelor.


Exemplul 3

Intrare
6
Ieșire
Datele introduse corespund cerințelor.
Rezultatul este 873


Rezolvare

#0050
def calculeaza_produs(k):
    """Calculează produsul 1*2*...*k."""
    produs = 1
    for i in range(1, k+1):
        produs *= i
    return produs


def calculeaza_suma(n):
    """Calculează suma 1 + 1*2 + 1*2*3 + ... + 1*2*...*n."""
    suma = 0
    for k in range(1, n+1):
        produs = calculeaza_produs(k)
        suma += produs
    return suma


def valideaza_n(n):
    """Verifică dacă n este un număr întreg între 1 și 15."""
    if n < 1 or n > 15:
        return False
    return True

if __name__ == '__main__':
    n = int(input("Introduceți numărul n: "))
    while not valideaza_n(n):
        print("Datele introduse nu corespund cerintelor")
        n = int(input("Introduceți numărul n: "))

    rezultat = calculeaza_suma(n)
    print("Datele introduse corespund cerintelor.")
    print("Rezultatul este", rezultat)

Explicatie rezolvare

Acest program calculează suma 1 + 1*2 + 1*2*3 + ... + 1*2*...n, unde n este un număr întreg între 1 și 15. Funcția calculeaza_produs(k) calculează produsul 1*2*...*k, iar funcția calculeaza_suma(n) calculează suma produselor de la 1 la n. Funcția valideaza_n(n) validează datele de intrare, verificând dacă numărul este întreg și se încadrează în intervalul specificat. Dacă numărul introdus de utilizator nu respectă cerințele, se afișează un mesaj corespunzător și se cere un nou număr.