0926 - FSumDiv3Rec: Difference between revisions

From Bitnami MediaWiki
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...
 
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: # cazul de baza 1: n este 0
     if n == 0:
         return 0
         return 0
     elif n == 1:  # cazul de baza 2: n este 1
     if v[n-1] % 3 == 0:
        if v[0] % 3 == 0:
        return v[n-1] + sum3(v, n-1)
            return v[0]
    return sum3(v, n-1)
        else:
def main():
            return 0
    n = int(input("Introduceti numarul de elemente: "))
    else:  # cazul general
    v = []
        mijloc = n // 2
    for i in range(n):
        suma_stanga = sum3(v, mijloc)
        v.append(int(input(f"Introduceti elementul {i}: ")))
        suma_dreapta = sum3(v[mijloc:], n - mijloc)
     if validare(n, v):
        return suma_stanga + suma_dreapta
        print("Datele de intrare corespund restricțiilor impuse.")
n = int(input())
        print("Suma elementelor divizibile cu 3 din vector este:", sum3(v, n))
if n > 0 and n <= 100: # verificam daca n se afla in intervalul permis
  if __name__ == "__main__":
    v = list(map(int, input().split()))
    main()
     suma = sum3(v, n)
 
    print("Suma elementelor divizibile cu 3 este:", suma)
#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.
  else: # daca n nu se afla in intervalul permis, afisam un mesaj de eroare
#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.
    print("Datele de intrare nu corespund restrictiilor impuse.")
#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()
  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.