0830 - Generare2: Difference between revisions
Catalin Moje (talk | contribs) Pagină nouă: ==Cerinţa== Se dau patru numere naturale n a x y. Să se afișeze elementele mulțimii M, cu următoarele proprietăți: toate elementele lui M sunt numere naturale mai mici sau egale cu n; a se află în M; dacă b se află în M, atunci b+x și b+y se află în M. ==Date de intrare== Programul citește de la tastatură numerele n a x y. ==Date de ieșire== Dacă datele de intrare corespund restrictiilor impuse se va afișa mesajul "Datele de intrare corespund restricți... |
Catalin Moje (talk | contribs) No edit summary |
||
Line 14: | Line 14: | ||
==Restricţii şi precizări== | ==Restricţii şi precizări== | ||
1 ≤ n ≤ 10000 | *1 ≤ n ≤ 10000 | ||
1 ≤ x , y ≤ 10000 | *1 ≤ x , y ≤ 10000 | ||
0 ≤ a ≤ 10000 | *0 ≤ a ≤ 10000 | ||
==Exemplu== | ==Exemplu== | ||
===Exemplu 1=== | ===Exemplu 1=== | ||
:Intrare: | |||
n = 25 | ;n = 25 | ||
a = 3 | ;a = 3 | ||
x = 4 | ;x = 4 | ||
y = 11 | ;y = 11 | ||
Datele de intrare corespund restricțiilor | :Iesire: | ||
M = {3, 7, 11, 14, 15, 18, 19, 22, 23, 25} | ;Datele de intrare corespund restricțiilor | ||
;M = {3, 7, 11, 14, 15, 18, 19, 22, 23, 25} | |||
===Exemplu 2=== | ===Exemplu 2=== | ||
:Intrare: | |||
n = 1 | ;n = 1 | ||
a = 2 | ;a = 2 | ||
x = 3 | ;x = 3 | ||
y = 4 | ;y = 4 | ||
Datele de intrare nu corespund cerinței | :Iesire: | ||
;Datele de intrare nu corespund cerinței | |||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line="1"> | ||
def suma(v, n): | def suma(v, n): | ||
Line 63: | Line 64: | ||
==Explicații== | ==Explicații== | ||
Funcția validare primește ca parametri numerele n, a, x și y și verifică dacă acestea respectă restricțiile cerute de problema. Dacă datele de intrare sunt valide, funcția returnează True, altfel returnează False. | #1 Funcția validare primește ca parametri numerele n, a, x și y și verifică dacă acestea respectă restricțiile cerute de problema. Dacă datele de intrare sunt valide, funcția returnează True, altfel returnează False. | ||
Funcția rezolvare primește ca parametri numerele n, a, x și y și construiește mulțimea M cu ajutorul unui algoritm de tip backtracking. Mai întâi se adaugă elementul a în mulțimea M. Apoi, se parcurge mulțimea M și pentru fiecare element i din mulțime, se calculează elementele i + x și i + y. Dacă acestea sunt mai mici sau egale cu n, atunci sunt adăugate în mulțimea M. Se continuă până când nu se mai pot adăuga elemente în mulțime. | #2 Funcția rezolvare primește ca parametri numerele n, a, x și y și construiește mulțimea M cu ajutorul unui algoritm de tip backtracking. Mai întâi se adaugă elementul a în mulțimea M. Apoi, se parcurge mulțimea M și pentru fiecare element i din mulțime, se calculează elementele i + x și i + y. Dacă acestea sunt mai mici sau egale cu n, atunci sunt adăugate în mulțimea M. Se continuă până când nu se mai pot adăuga elemente în mulțime. | ||
Funcția main este funcția principală a programului. În ea se citesc datele de intrare de la utilizator și se verifică dacă sunt valide apelând funcția validare. Dacă datele de intrare sunt valide, se apelează funcția rezolvare și se afișează mulțimea M. Altfel, se afișează un mesaj corespunzător. | #3 Funcția main este funcția principală a programului. În ea se citesc datele de intrare de la utilizator și se verifică dacă sunt valide apelând funcția validare. Dacă datele de intrare sunt valide, se apelează funcția rezolvare și se afișează mulțimea M. Altfel, se afișează un mesaj corespunzător. |
Latest revision as of 20:26, 14 May 2023
Cerinţa[edit | edit source]
Se dau patru numere naturale n a x y. Să se afișeze elementele mulțimii M, cu următoarele proprietăți:
toate elementele lui M sunt numere naturale mai mici sau egale cu n; a se află în M; dacă b se află în M, atunci b+x și b+y se află în M.
Date de intrare[edit | edit source]
Programul citește de la tastatură numerele n a x y.
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]
- 1 ≤ n ≤ 10000
- 1 ≤ x , y ≤ 10000
- 0 ≤ a ≤ 10000
Exemplu[edit | edit source]
Exemplu 1[edit | edit source]
- Intrare:
- n = 25
- a = 3
- x = 4
- y = 11
- Iesire:
- Datele de intrare corespund restricțiilor
- M = {3, 7, 11, 14, 15, 18, 19, 22, 23, 25}
Exemplu 2[edit | edit source]
- Intrare:
- n = 1
- a = 2
- x = 3
- y = 4
- Iesire:
- Datele de intrare nu corespund cerinței
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1">
def suma(v, n):
if n == 1: return v[0] else: return v[n-1] + suma(v, n-1)
try:
n = int(input("Introduceți numărul de elemente ale tabloului: ")) if n < 1 or n > 100: print("Datele de intrare nu corespund restrictiilor impuse.") else: v = [] for i in range(n): elem = int(input(f"v[{i}] = ")) v.append(elem) print("Datele de intrare corespund restricțiilor impuse.") print("Suma elementelor din tablou este:", suma(v, n))
except ValueError:
print("Datele de intrare nu corespund restrictiilor impuse.")
</syntaxhighlight>
Explicații[edit | edit source]
- 1 Funcția validare primește ca parametri numerele n, a, x și y și verifică dacă acestea respectă restricțiile cerute de problema. Dacă datele de intrare sunt valide, funcția returnează True, altfel returnează False.
- 2 Funcția rezolvare primește ca parametri numerele n, a, x și y și construiește mulțimea M cu ajutorul unui algoritm de tip backtracking. Mai întâi se adaugă elementul a în mulțimea M. Apoi, se parcurge mulțimea M și pentru fiecare element i din mulțime, se calculează elementele i + x și i + y. Dacă acestea sunt mai mici sau egale cu n, atunci sunt adăugate în mulțimea M. Se continuă până când nu se mai pot adăuga elemente în mulțime.
- 3 Funcția main este funcția principală a programului. În ea se citesc datele de intrare de la utilizator și se verifică dacă sunt valide apelând funcția validare. Dacă datele de intrare sunt valide, se apelează funcția rezolvare și se afișează mulțimea M. Altfel, se afișează un mesaj corespunzător.