0831 - Generare3: Difference between revisions
Catalin Moje (talk | contribs) Pagină nouă: ==Cerinţa== Se dă un număr natural n. Să se genereze, în ordine lexicografică, toate șirurile de cifre binare de lungime n. ==Date de intrare== Programul citește de la tastatură numărul n ==Date de ieșire== 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... |
Catalin Moje (talk | contribs) No edit summary |
||
Line 10: | Line 10: | ||
==Restricţii şi precizări== | ==Restricţii şi precizări== | ||
1 ≤ n ≤ 10 | *1 ≤ n ≤ 10 | ||
==Exemplu== | ==Exemplu== | ||
===Exemplu 1=== | ===Exemplu 1=== | ||
:Intrare: | |||
Introduceti numarul n: 3 | ;Introduceti numarul n: 3 | ||
Datele de intrare corespund restricțiilor | :Iesire: | ||
000 | ;Datele de intrare corespund restricțiilor | ||
001 | ;000 | ||
010 | ;001 | ||
011 | ;010 | ||
100 | ;011 | ||
101 | ;100 | ||
110 | ;101 | ||
111 | ;110 | ||
;111 | |||
===Exemplu 2=== | ===Exemplu 2=== | ||
:Intrare: | |||
Introduceti numarul n: 11 | ;Introduceti numarul n: 11 | ||
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 valideaza_intrare(n): | def valideaza_intrare(n): | ||
Line 63: | Line 64: | ||
==Explicații== | ==Explicații== | ||
Funcția validează_intrare primește n și verifică dacă acesta este între 1 și 10. Dacă este, afișează un mesaj de confirmare și returnează True. Dacă nu este, afișează un mesaj de eroare și returnează False. | #1 Funcția validează_intrare primește n și verifică dacă acesta este între 1 și 10. Dacă este, afișează un mesaj de confirmare și returnează True. Dacă nu este, afișează un mesaj de eroare și returnează False. | ||
Funcția genereaza_siruri_binare primește n și folosește un generator pentru a genera toate șirurile de cifre binare de lungime n în ordine lexicografică. Pentru a face acest lucru, pentru fiecare număr între 0 și 2^n-1, convertim numărul în binar și îl umplem cu zero-uri la stânga până la lungimea n. | #2 Funcția genereaza_siruri_binare primește n și folosește un generator pentru a genera toate șirurile de cifre binare de lungime n în ordine lexicografică. Pentru a face acest lucru, pentru fiecare număr între 0 și 2^n-1, convertim numărul în binar și îl umplem cu zero-uri la stânga până la lungimea n. | ||
Funcția main citește numărul n de la tastatură și, dacă datele de intrare sunt valide, afișează toate șirurile de cifre binare de lungime n în ordine lexicografică. | #3 Funcția main citește numărul n de la tastatură și, dacă datele de intrare sunt valide, afișează toate șirurile de cifre binare de lungime n în ordine lexicografică. | ||
La sfârșit, verificăm dacă programul rulează ca program principal și, dacă da, apelăm funcția main. | #4 La sfârșit, verificăm dacă programul rulează ca program principal și, dacă da, apelăm funcția main. |
Revision as of 20:30, 14 May 2023
Cerinţa
Se dă un număr natural n. Să se genereze, în ordine lexicografică, toate șirurile de cifre binare de lungime n.
Date de intrare
Programul citește de la tastatură numărul n
Date de ieșire
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
- 1 ≤ n ≤ 10
Exemplu
Exemplu 1
- Intrare:
- Introduceti numarul n
- 3
- Iesire:
- Datele de intrare corespund restricțiilor
- 000
- 001
- 010
- 011
- 100
- 101
- 110
- 111
Exemplu 2
- Intrare:
- Introduceti numarul n
- 11
- Iesire:
- Datele de intrare nu corespund cerinței
Rezolvare
<syntaxhighlight lang="python" line="1">
def valideaza_intrare(n):
if 1 <= n <= 10: print("Datele de intrare corespund restricțiilor") return True else: print("Datele de intrare nu corespund cerinței") return False
def genereaza_siruri_binare(n):
for i in range(2**n): yield bin(i)[2:].zfill(n)
def main():
n = int(input("Introduceti numarul n: ")) if valideaza_intrare(n): for sir in genereaza_siruri_binare(n): print(sir)
if __name__ == '__main__':
main()
</syntaxhighlight>
Explicații
- 1 Funcția validează_intrare primește n și verifică dacă acesta este între 1 și 10. Dacă este, afișează un mesaj de confirmare și returnează True. Dacă nu este, afișează un mesaj de eroare și returnează False.
- 2 Funcția genereaza_siruri_binare primește n și folosește un generator pentru a genera toate șirurile de cifre binare de lungime n în ordine lexicografică. Pentru a face acest lucru, pentru fiecare număr între 0 și 2^n-1, convertim numărul în binar și îl umplem cu zero-uri la stânga până la lungimea n.
- 3 Funcția main citește numărul n de la tastatură și, dacă datele de intrare sunt valide, afișează toate șirurile de cifre binare de lungime n în ordine lexicografică.
- 4 La sfârșit, verificăm dacă programul rulează ca program principal și, dacă da, apelăm funcția main.