0048 - Sumă Pătrate1: Diferență între versiuni
(Nu s-au afișat 11 versiuni intermediare efectuate de alți 2 utilizatori) | |||
Linia 7: | Linia 7: | ||
== 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 rând nou programul afișează rezultatul lui S, unde S reprezintă suma calculată. În caz contrar, se va afișa mesajul: "Datele introduse nu corespund cerintelor." | |||
== Restricţii şi precizări == | == Restricţii şi precizări == | ||
Linia 16: | Linia 16: | ||
: Introduceti numarul n: 20 | : Introduceti numarul n: 20 | ||
; Ieșire | ; Ieșire | ||
: | : Datele introduse corespund cerintelor. | ||
: 30 | |||
<br> | <br> | ||
Linia 23: | Linia 24: | ||
: Introduceti numarul n: 1001 | : Introduceti numarul n: 1001 | ||
; Ieșire | ; Ieșire | ||
: | : Datele introduse nu corespund cerintelor. | ||
<br> | <br> | ||
Linia 30: | Linia 31: | ||
#0048 | #0048 | ||
import math | import math | ||
def este_patrat_perfect(numar): | def este_patrat_perfect(numar): | ||
radadica = int(math.sqrt(numar)) | |||
return | return radadica * radadica == numar | ||
Linia 46: | Linia 48: | ||
def valideaza_numar(n): | def valideaza_numar(n): | ||
if n <= 0: | if n <= 0: | ||
print(" | print("Datele introdsue corespund cerintelor.") | ||
exit() | exit() | ||
if n >= 1000: | if n >= 1000: | ||
print(" | print("Datele introduse nu corespund cerintelor.") | ||
exit() | exit() | ||
Linia 57: | Linia 59: | ||
valideaza_numar(n) | valideaza_numar(n) | ||
rezultat = suma_patrate_perfecte_pana_la(n) | rezultat = suma_patrate_perfecte_pana_la(n) | ||
print(" | print("Datele introduse corespund cerintelor.\n", rezultat) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==Explicatie rezolvare== | |||
Acest program calculează suma pătratelor perfecte mai mici sau egale cu un număr dat "n". | |||
Funcția "este_patrat_perfect" verifică dacă un număr este pătrat perfect. În cazul în care numărul este pătrat perfect, aceasta va returna valoarea True, altfel va returna valoarea False. | |||
Funcția "suma_patrate_perfecte_pana_la" calculează suma tuturor pătratelor perfecte mai mici sau egale cu numărul dat "n". Se utilizează o buclă "for" pentru a itera prin numerele de la 1 până la "n" și se verifică dacă fiecare număr este pătrat perfect. În caz afirmativ, numărul este adăugat la variabila "suma". La final, funcția returnează valoarea "suma". | |||
Funcția "valideaza_numar" verifică dacă numărul introdus este mai mare decât 0 și mai mic decât 1000. În cazul în care numărul nu se încadrează în această plajă, programul va afișa un mesaj de eroare și se va încheia prin apelarea funcției "exit()". | |||
În secțiunea "if __name__ == '__main__':", programul primește un input de la utilizator pentru a afla numărul "n". Acesta este validat apelând funcția "valideaza_numar". Dacă numărul este valid, programul va apela funcția "suma_patrate_perfecte_pana_la" și va afișa rezultatul. În caz contrar, programul va afișa un mesaj de eroare și se va încheia prin apelarea funcției "exit()". |
Versiunea curentă din 11 mai 2023 23:07
Sursa: [1]
Cerinţa
Să se scrie un program care citește numărul natural n și determină suma pătratelor perfecte mai mici sau egale cu n.
Date de intrare
Programul citește de la tastatură numărul n.
Date de ieșire
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele introduse corespund cerintelor", apoi pe un rând nou programul afișează rezultatul lui S, unde S reprezintă suma calculată. În caz contrar, se va afișa mesajul: "Datele introduse nu corespund cerintelor."
Restricţii şi precizări
- 0 < n < 1000
Exemplul 1
- Intrare
- Introduceti numarul n: 20
- Ieșire
- Datele introduse corespund cerintelor.
- 30
Exemplul 2
- Intrare
- Introduceti numarul n: 1001
- Ieșire
- Datele introduse nu corespund cerintelor.
Rezolvare
#0048
import math
def este_patrat_perfect(numar):
radadica = int(math.sqrt(numar))
return radadica * radadica == numar
def suma_patrate_perfecte_pana_la(n):
suma = 0
for i in range(1, n+1):
if este_patrat_perfect(i):
suma += i
return suma
def valideaza_numar(n):
if n <= 0:
print("Datele introdsue corespund cerintelor.")
exit()
if n >= 1000:
print("Datele introduse nu corespund cerintelor.")
exit()
if __name__ == '__main__':
n = int(input("Introduceti numarul n: "))
valideaza_numar(n)
rezultat = suma_patrate_perfecte_pana_la(n)
print("Datele introduse corespund cerintelor.\n", rezultat)
Explicatie rezolvare
Acest program calculează suma pătratelor perfecte mai mici sau egale cu un număr dat "n".
Funcția "este_patrat_perfect" verifică dacă un număr este pătrat perfect. În cazul în care numărul este pătrat perfect, aceasta va returna valoarea True, altfel va returna valoarea False.
Funcția "suma_patrate_perfecte_pana_la" calculează suma tuturor pătratelor perfecte mai mici sau egale cu numărul dat "n". Se utilizează o buclă "for" pentru a itera prin numerele de la 1 până la "n" și se verifică dacă fiecare număr este pătrat perfect. În caz afirmativ, numărul este adăugat la variabila "suma". La final, funcția returnează valoarea "suma".
Funcția "valideaza_numar" verifică dacă numărul introdus este mai mare decât 0 și mai mic decât 1000. În cazul în care numărul nu se încadrează în această plajă, programul va afișa un mesaj de eroare și se va încheia prin apelarea funcției "exit()".
În secțiunea "if __name__ == '__main__':", programul primește un input de la utilizator pentru a afla numărul "n". Acesta este validat apelând funcția "valideaza_numar". Dacă numărul este valid, programul va apela funcția "suma_patrate_perfecte_pana_la" și va afișa rezultatul. În caz contrar, programul va afișa un mesaj de eroare și se va încheia prin apelarea funcției "exit()".