1844 - Inlocuire0Rec: Difference between revisions

From Bitnami MediaWiki
No edit summary
No edit summary
 
(One intermediate revision by the same user not shown)
Line 7: Line 7:


==Date de ieșire==
==Date de ieșire==
Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse."
Dacă datele de intrare corespund restrictiilor impuse se va afișa mesajul "Datele de intrare corespund restricțiilor" și pe un rând nou se afișează ceea ce se cere. Altfel, dacă datele de intrare nu corespund cerinței se va afișa mesajul: "Datele de intrare nu corespund cerinței".
Î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==
==Restricţii şi precizări==
2<n<50
*2<n<50
numele subprogramului cerut este num
*numele subprogramului cerut este num
parametrii sunt, în această ordine: n, v
*parametrii sunt, în această ordine: n, v
elementele tabloului v sunt indexate de la zero
*elementele tabloului v sunt indexate de la zero
se recomandă realizarea unui subprogram recursiv
*se recomandă realizarea unui subprogram recursiv


==Exemplu==
==Exemplu==
Dacă n=7 şi v=(4, 5, 0, 9, 3, 4, -2), atunci după apel v=(0, 5, 0, 9, 0, 0, 0).
===Exemplu 1===
:Intrare:
;Introduceti numarul de elemente: 7
;Introduceti elementul 0: 4
;Introduceti elementul 1: 5
;Introduceti elementul 2: 0
;Introduceti elementul 3: 9
;Introduceti elementul 4: 3
;Introduceti elementul 5: 4
;Introduceti elementul 6: -2
:Iesire:
;Datele de intrare corespund restricțiilor
;[0, 5, 0, 9, 0, 0, 0]
 
===Exemplu 2===
:Intrare:
;Introduceti numarul de elemente: 101
:Iesire:
;Datele de intrare nu corespund cerinței


==Important==
==Important==
Line 24: Line 42:


==Rezolvare==
==Rezolvare==
def validare(n, v):
<syntaxhighlight lang="python" line="1">
    """
def num(n, v):
    Verifică dacă valorile introduse corespund restricțiilor impuse de cerință.
     if n == 1:
    :param n: numărul de elemente al tabloului
    :param v: tabloul de elemente
    :return: True dacă valorile sunt valide, False în caz contrar
    """
    if not 2 < n < 50:
        return False
    for val in v:
        if not -10000 <= val <= 9999:
            return False
    return True
def num(n, v):
    """
    Funcția modifică tabloul v prin înlocuirea fiecărei valori mai mici sau egale cu prima valoare din tablou cu 0.
    :param n: numărul de elemente al tabloului
    :param v: tabloul de elemente
    :return: tabloul modificat prin referință
    """
     if n == 0:
         return v
         return v
     v[n-1] = 0 if v[n-1] <= v[0] else v[n-1]
 
     num(n-1, v)
     v = num(n - 1, v)
if __name__ == '__main__':
 
    n = int(input("Introduceti numarul de elemente: "))
    if v[n - 1] <= v[0]:
        v[n - 1] = 0
 
     return v
 
 
n = int(input("Introduceti numarul de elemente: "))
if n < 2 or n > 50:
    print("Datele de intrare nu corespund cerinței")
else:
     v = []
     v = []
     for i in range(n):
     for i in range(n):
         v.append(int(input(f"Introduceti elementul {i+1}: ")))
         v.append(int(input("Introduceti elementul " + str(i) + ": ")))
     if validare(n, v):
 
        num(n, v)
     print("Datele de intrare corespund restricțiilor")
        print("Tabloul modificat este: ", v)
    print(num(n, v))
    else:
</syntaxhighlight>
        print("Datele de intrare nu corespund restricțiilor impuse.")
 
Funcția de validare primește numărul de elemente și tabloul de elemente și returnează True dacă valorile sunt valide, respectiv False în caz contrar.
 
Funcția num primește numărul de elemente și tabloul de elemente și îl modifică prin înlocuirea fiecărei valori mai mici sau egale cu prima valoare
==Explicații==
Definim o funcție numită "num" cu doi parametri: "n" - reprezentând numărul de elemente al listei și "v" - reprezentând lista în sine.
 
Verificăm dacă lista conține cel puțin două elemente. Dacă nu, afișăm un mesaj de eroare și părăsim funcția.
 
Verificăm dacă primul element al listei este mai mare decât ultimul element al listei. Dacă este, afișăm un mesaj de eroare și părăsim funcția.
 
Verificăm dacă primul element al listei este mai mare sau egal cu oricare alt element din listă. Dacă nu este, eliminăm elementul cu valoarea minimă și apelăm recursiv funcția cu lista actualizată.
 
În final, returnăm lista modificată.
 
În cadrul programului principal, se cere utilizatorului să introducă numărul de elemente și valorile elementelor listei, iar apoi se apelează funcția "num" cu aceste parametri. Dacă datele introduse nu corespund cerințelor, se afișează un mesaj de eroare, altfel se afișează lista modificată.

Latest revision as of 21:55, 14 May 2023

Cerinţa[edit | edit source]

Scrieţi definiția completă a subprogramului recursiv num care are 2 parametri: n – prin care primește un număr natural și v, prin care primeşte un tablou unidimensional cu n elemente, numere întregi cu cel mult 4 cifre. Subprogramul înlocuieşte cu 0 fiecare valoare mai mică sau egală cu prima valoare din tablou. Tabloul modificat este furnizat tot prin parametrul v.

Date de intrare[edit | edit source]

Se va introduce de la tastatură un număr natural care va fi transmis ca perimetru

Date de ieșire[edit | edit source]

Dacă datele de intrare corespund restrictiilor impuse se va afișa mesajul "Datele de intrare corespund restricțiilor" și pe un rând nou se afișează ceea ce se cere. Altfel, dacă datele de intrare nu corespund cerinței se va afișa mesajul: "Datele de intrare nu corespund cerinței".


Restricţii şi precizări[edit | edit source]

  • 2<n<50
  • numele subprogramului cerut este num
  • parametrii sunt, în această ordine: n, v
  • elementele tabloului v sunt indexate de la zero
  • se recomandă realizarea unui subprogram recursiv

Exemplu[edit | edit source]

Exemplu 1[edit | edit source]

Intrare:
Introduceti numarul de elemente
7
Introduceti elementul 0
4
Introduceti elementul 1
5
Introduceti elementul 2
0
Introduceti elementul 3
9
Introduceti elementul 4
3
Introduceti elementul 5
4
Introduceti elementul 6
-2
Iesire:
Datele de intrare corespund restricțiilor
[0, 5, 0, 9, 0, 0, 0]

Exemplu 2[edit | edit source]

Intrare:
Introduceti numarul de elemente
101
Iesire:
Datele de intrare nu corespund cerinței

Important[edit | edit source]

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[edit | edit source]

<syntaxhighlight lang="python" line="1"> def num(n, v):

   if n == 1:
       return v
   v = num(n - 1, v)
   if v[n - 1] <= v[0]:
       v[n - 1] = 0
   return v


n = int(input("Introduceti numarul de elemente: ")) if n < 2 or n > 50:

   print("Datele de intrare nu corespund cerinței")

else:

   v = []
   for i in range(n):
       v.append(int(input("Introduceti elementul " + str(i) + ": ")))
   print("Datele de intrare corespund restricțiilor")
   print(num(n, v))

</syntaxhighlight>


Explicații[edit | edit source]

Definim o funcție numită "num" cu doi parametri: "n" - reprezentând numărul de elemente al listei și "v" - reprezentând lista în sine.

Verificăm dacă lista conține cel puțin două elemente. Dacă nu, afișăm un mesaj de eroare și părăsim funcția.

Verificăm dacă primul element al listei este mai mare decât ultimul element al listei. Dacă este, afișăm un mesaj de eroare și părăsim funcția.

Verificăm dacă primul element al listei este mai mare sau egal cu oricare alt element din listă. Dacă nu este, eliminăm elementul cu valoarea minimă și apelăm recursiv funcția cu lista actualizată.

În final, returnăm lista modificată.

În cadrul programului principal, se cere utilizatorului să introducă numărul de elemente și valorile elementelor listei, iar apoi se apelează funcția "num" cu aceste parametri. Dacă datele introduse nu corespund cerințelor, se afișează un mesaj de eroare, altfel se afișează lista modificată.