1684 - Numere Piramidale: Difference between revisions

From Bitnami MediaWiki
Paul Ungur (talk | contribs)
 
Paul Ungur (talk | contribs)
No edit summary
 
(7 intermediate revisions by 2 users not shown)
Line 6: Line 6:


==Date de ieșire==
==Date de ieșire==
Programul va afișa pe ecran primele <span style="color: red;"> n</span> numere piramidale, în ordine crescătoare, separate prin câte un spațiu.
Dacă datele sunt introduse corect, pe ecran se va afișa: '''"Date de intrare valide."''', apoi programul va afișa pe ecran primele <span style="color: red;"> n</span> numere piramidale, în ordine crescătoare, separate prin câte un spațiu. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: '''"Date de intrare invalide".'''


==Restricții și precizări==
==Restricții și precizări==
Line 13: Line 13:
==Exemplu:==
==Exemplu:==
Intrare
Intrare
3
: 3


Ieșire
Ieșire
1 5 14
: Date de intrare valide
: 1 5 14


==Explicație==
==Explicație==
Primele <span style="color: red;"> 3</span> numere piramidale sunt <span style="color: red;"> 1</span>, <span style="color: red;"> 5</span si <span style="color: red;"> 14</span.
Primele <span style="color: red;"> 3</span> numere piramidale sunt <span style="color: red;"> 1</span>, <span style="color: red;"> 5</span> si <span> 14</span>.


==Rezolvare==
==Rezolvare==
<syntaxhighlight lang=“python” line>
<syntaxhighlight lang="python" line="1">
import math
def validare_date(n):
    if not n.isdigit():
        return False
    n = int(n)
    if n < 1 or n > 400:
        return False
    return True


def is_square(n):
    return int(math.sqrt(n)) ** 2 == n


n = int(input())
def compute_pyramid_numbers(n):
suma = 0
    pyramid_numbers = []
    for i in range(1, n+ 1):
        pyramid_number = sum([j ** 2 for j in range(1, i + 1)])
        pyramid_numbers.append(pyramid_number)
    print("Primele", n, "numere piramidale sunt:", " ".join(str(p) for p in pyramid_numbers))
 
 
if __name__ == '__main__':
    n = input("Introduceti numarul de numere piramidale: ")
    while not validare_date(n):
        n = input("Input invalid! Introduceti numarul de numere piramidale: ")
    if validare_date(n):
        print("Date de intrare valide")
        compute_pyramid_numbers(int(n))


for i in range(1, n + 1):
    suma += i ** 2
    print(suma, end=" ")
</syntaxhighlight>
</syntaxhighlight>
==Explicatie cod:==
Funcția validare_date(n) verifică dacă valoarea n este un număr valid pentru a calcula numere piramidale. Verifică dacă n este un șir de caractere numeric și apoi convertește n la tipul int. Verifică apoi dacă n se încadrează în intervalul [1, 400]. Dacă nu se îndeplinesc aceste condiții, returnează False, altfel returnează True.
Funcția compute_pyramid_numbers(n) calculează primele n numere piramidale. Folosește o buclă for pentru a itera de la 1 la n. Pentru fiecare valoare i, calculează numărul piramidal folosind formula pyramid_number = sum([j ** 2 for j in range(1, i + 1)]). Adaugă numărul piramidal calculat în lista pyramid_numbers. La final, afișează lista pyramid_numbers într-un format adecvat.
În blocul if __name__ == '__main__':, se solicită utilizatorului să introducă numărul de numere piramidale pe care dorește să le calculeze. Se verifică dacă valoarea introdusă este validă utilizând funcția validare_date(n). Dacă nu este validă, utilizatorului i se cere să reintroducă un număr valid. Dacă valoarea introdusă este validă, se afișează mesajul "Date de intrare valide" și se apelează funcția compute_pyramid_numbers(int(n)) pentru a calcula și afișa numerele piramidale.

Latest revision as of 18:12, 29 June 2023

Cerința[edit]

Amicul nostru, Zoli, a învățat la scoală despre pătrate perfecte și numere piramidale. Al n-lea număr piramidal înseamnă suma primelor n pătrate perfecte, începând de la 1. Ajutați-l pe Zoli sa afle primele n numere piramidale.

Date de intrare[edit]

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

Date de ieșire[edit]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Date de intrare valide.", apoi programul va afișa pe ecran primele n numere piramidale, în ordine crescătoare, separate prin câte un spațiu. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Date de intrare invalide".

Restricții și precizări[edit]

1 ≤ n ≤ 400

Exemplu:[edit]

Intrare

3

Ieșire

Date de intrare valide
1 5 14

Explicație[edit]

Primele 3 numere piramidale sunt 1, 5 si 14.

Rezolvare[edit]

<syntaxhighlight lang="python" line="1"> def validare_date(n):

   if not n.isdigit():
       return False
   n = int(n)
   if n < 1 or n > 400:
       return False
   return True


def compute_pyramid_numbers(n):

   pyramid_numbers = []
   for i in range(1, n+ 1):
       pyramid_number = sum([j ** 2 for j in range(1, i + 1)])
       pyramid_numbers.append(pyramid_number)
   print("Primele", n, "numere piramidale sunt:", " ".join(str(p) for p in pyramid_numbers))


if __name__ == '__main__':

   n = input("Introduceti numarul de numere piramidale: ")
   while not validare_date(n):
       n = input("Input invalid! Introduceti numarul de numere piramidale: ")
   if validare_date(n):
       print("Date de intrare valide")
       compute_pyramid_numbers(int(n))

</syntaxhighlight>

Explicatie cod:[edit]

Funcția validare_date(n) verifică dacă valoarea n este un număr valid pentru a calcula numere piramidale. Verifică dacă n este un șir de caractere numeric și apoi convertește n la tipul int. Verifică apoi dacă n se încadrează în intervalul [1, 400]. Dacă nu se îndeplinesc aceste condiții, returnează False, altfel returnează True. Funcția compute_pyramid_numbers(n) calculează primele n numere piramidale. Folosește o buclă for pentru a itera de la 1 la n. Pentru fiecare valoare i, calculează numărul piramidal folosind formula pyramid_number = sum([j ** 2 for j in range(1, i + 1)]). Adaugă numărul piramidal calculat în lista pyramid_numbers. La final, afișează lista pyramid_numbers într-un format adecvat. În blocul if __name__ == '__main__':, se solicită utilizatorului să introducă numărul de numere piramidale pe care dorește să le calculeze. Se verifică dacă valoarea introdusă este validă utilizând funcția validare_date(n). Dacă nu este validă, utilizatorului i se cere să reintroducă un număr valid. Dacă valoarea introdusă este validă, se afișează mesajul "Date de intrare valide" și se apelează funcția compute_pyramid_numbers(int(n)) pentru a calcula și afișa numerele piramidale.