0926 - FSumDiv3Rec

From Bitnami MediaWiki
Revision as of 10:39, 25 March 2023 by Catalin Moje (talk | contribs)

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()
  1. 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.
  2. 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.
  3. 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.