0926 - FSumDiv3Rec: Difference between revisions
Catalin Moje (talk | contribs) Pagină nouă: ==Cerinţa== Scrieţi definiția completă a subprogramului recursiv <code>sum3</code>, care primeşte prin parametrul <code>v</code> un tablou unidimensional cu cel mult 100 de elemente întregi, iar prin parametrul <code>n</code> numărul efectiv de elemente din <code>v</code>. Subprogramul returnează suma elementelor din tabloul <code>v</code> care sunt divizibile cu 3. ==Date de intrare== Se va introduce de la tastatură un număr natural care va fi transmis ca perimetr... |
Catalin Moje (talk | contribs) No edit summary |
||
Line 19: | Line 19: | ||
==Exemplu== | ==Exemplu== | ||
Dacă n=6, x= (12, 7, 6, 3, 8, 5), rezultatul va fi 21. | Dacă n=6, x= (12, 7, 6, 3, 8, 5), rezultatul va fi 21. | ||
==Important== | |||
Soluţia propusă va conţine doar definiţia subprogramului cerut. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei. | |||
==Rezolvare== | ==Rezolvare== | ||
def validare(n, v): | |||
if n < 1 or n > 100: | |||
print("Datele de intrare nu corespund restricțiilor impuse.") | |||
return False | |||
if len(v) != n: | |||
print("Datele de intrare nu corespund restricțiilor impuse.") | |||
return False | |||
return True | |||
def sum3(v, n): | def sum3(v, n): | ||
if n == 0: | if n == 0: | ||
return 0 | return 0 | ||
if v[n-1] % 3 == 0: | |||
return v[n-1] + sum3(v, n-1) | |||
return sum3(v, n-1) | |||
def main(): | |||
n = int(input("Introduceti numarul de elemente: ")) | |||
v = [] | |||
for i in range(n): | |||
v.append(int(input(f"Introduceti elementul {i}: "))) | |||
if validare(n, v): | |||
print("Datele de intrare corespund restricțiilor impuse.") | |||
print("Suma elementelor divizibile cu 3 din vector este:", sum3(v, n)) | |||
if __name__ == "__main__": | |||
main() | |||
#Funcția validare verifică dacă n este între 1 și 100 și dacă lungimea vectorului este n. Dacă datele de intrare nu corespund acestor restricții, se afișează un mesaj de eroare și se returnează False. Dacă datele de intrare sunt valide, se returnează True. | |||
#Funcția sum3 este o funcție recursivă care calculează suma elementelor din vectorul dat care sunt divizibile cu 3. Funcția primește vectorul și numărul efectiv de elemente din vector. Dacă n este 0, se returnează 0. Altfel, se verifică dacă ultimul element din vector este divizibil cu 3. Dacă da, se adună cu suma elementelor din restul vectorului (adicatelea elementele de la 0 la n-2). Altfel, se calculează suma elementelor din restul vectorului. | |||
#Funcția main citește datele de intrare (numărul de elemente și vectorul) și verifică dacă datele de intrare sunt valide folosind funcția validare. Dacă da, se afișează un mesaj de confirmare și suma elementelor divizibile cu 3 din vector. |
Revision as of 10:39, 25 March 2023
Cerinţa
Scrieţi definiția completă a subprogramului recursiv sum3
, care primeşte prin parametrul v
un tablou unidimensional cu cel mult 100 de elemente întregi, iar prin parametrul n
numărul efectiv de elemente din v
.
Subprogramul returnează suma elementelor din tabloul v
care sunt divizibile cu 3.
Date de intrare
Se va introduce de la tastatură un număr natural care va fi transmis ca perimetru
Date de ieșire
Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse." În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu corespund restricțiilor impuse.".
Restricţii şi precizări
0 < n ≤ 100 numele subprogramului cerut este sum3 parametrii sunt, în această ordine: v, n indicii elementelor vectorului v sunt 0, 1 ,… , n-1. Se recomandă realizarea unui subprogram recursiv.
Exemplu
Dacă n=6, x= (12, 7, 6, 3, 8, 5), rezultatul va fi 21.
Important
Soluţia propusă va conţine doar definiţia subprogramului cerut. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.
Rezolvare
def validare(n, v): if n < 1 or n > 100: print("Datele de intrare nu corespund restricțiilor impuse.") return False if len(v) != n: print("Datele de intrare nu corespund restricțiilor impuse.") return False return True def sum3(v, n): if n == 0: return 0 if v[n-1] % 3 == 0: return v[n-1] + sum3(v, n-1) return sum3(v, n-1) def main(): n = int(input("Introduceti numarul de elemente: ")) v = [] for i in range(n): v.append(int(input(f"Introduceti elementul {i}: "))) if validare(n, v): print("Datele de intrare corespund restricțiilor impuse.") print("Suma elementelor divizibile cu 3 din vector este:", sum3(v, n)) if __name__ == "__main__": main()
- Funcția validare verifică dacă n este între 1 și 100 și dacă lungimea vectorului este n. Dacă datele de intrare nu corespund acestor restricții, se afișează un mesaj de eroare și se returnează False. Dacă datele de intrare sunt valide, se returnează True.
- Funcția sum3 este o funcție recursivă care calculează suma elementelor din vectorul dat care sunt divizibile cu 3. Funcția primește vectorul și numărul efectiv de elemente din vector. Dacă n este 0, se returnează 0. Altfel, se verifică dacă ultimul element din vector este divizibil cu 3. Dacă da, se adună cu suma elementelor din restul vectorului (adicatelea elementele de la 0 la n-2). Altfel, se calculează suma elementelor din restul vectorului.
- Funcția main citește datele de intrare (numărul de elemente și vectorul) și verifică dacă datele de intrare sunt valide folosind funcția validare. Dacă da, se afișează un mesaj de confirmare și suma elementelor divizibile cu 3 din vector.