0926 - FSumDiv3Rec

From Bitnami MediaWiki
Revision as of 20:51, 21 March 2023 by 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...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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.

Rezolvare

def sum3(v, n):
   if n == 0:  # cazul de baza 1: n este 0
       return 0
   elif n == 1:  # cazul de baza 2: n este 1
       if v[0] % 3 == 0:
           return v[0]
       else:
           return 0
   else:  # cazul general
       mijloc = n // 2
       suma_stanga = sum3(v, mijloc)
       suma_dreapta = sum3(v[mijloc:], n - mijloc)
       return suma_stanga + suma_dreapta
n = int(input())
if n > 0 and n <= 100:  # verificam daca n se afla in intervalul permis
   v = list(map(int, input().split()))
   suma = sum3(v, n)
   print("Suma elementelor divizibile cu 3 este:", suma)
else:  # daca n nu se afla in intervalul permis, afisam un mesaj de eroare
   print("Datele de intrare nu corespund restrictiilor impuse.")