2574 - Val 1: Difference between revisions

From Bitnami MediaWiki
Paul Ungur (talk | contribs)
Paul Ungur (talk | contribs)
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 6: Line 6:


==Date de ieșire==
==Date de ieșire==
Programul va afișa o diagrama cerută.
Dacă datele sunt introduse corect, pe ecran se va afișa: '''"Date de intrare valide."''', apoi programul va afișa o diagrama cerută. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: '''"Date de intrare invalide".'''


==Restricții și precizări==
==Restricții și precizări==
Line 13: Line 13:
==Exemplul 1:==
==Exemplul 1:==
Intrare
Intrare
5 4
: 5 4


Ieșire
Ieșire
: Date de intrare valide


__0_0_____0_0_____0_0_____0_0___
__0_0_____0_0_____0_0_____0_0___
Line 53: Line 54:
     Functie care verifica daca valorile citite pentru n si m respecta restrictiile problemei.
     Functie care verifica daca valorile citite pentru n si m respecta restrictiile problemei.
     """
     """
     if not (1 <= n <= m <= 20):
     if not (1 <= n <= 20 and 1 <= m <= 20):
         print("Date de intrare incorecte!")
         print("Date de intrare incorecte!")
         exit()
         exit()
Line 63: Line 64:
     """
     """
     # initializam matricea cu caractere "_"
     # initializam matricea cu caractere "_"
     matrice = [["_"] * (2 * n * m + m) for _ in range(n)]
     for j in range(1, n + 1):
        for i in range(1, 8 * m + 1):
            if j == 1:
                if i % 8 == 3 or i % 8 == 5:
                    print('0', end='')
                else:
                    print('_', end='')
            elif j == n:
                if i % 8 == 1 or i % 8 == 7:
                    print('0', end='')
                else:
                    print('_', end='')
            else:
                if i % 8 == 2 or i % 8 == 6:
                    print('0', end='')
                else:
                    print('_', end='')
        print()


    for i in range(n):
        for j in range(2 * n * m + m):
            if (i == 0 or i == n - 1) and (j % (2 * n + 1) != 2 * n):
                matrice[i][j] = "_"
            elif i > 0 and i < n - 1:
                if j % (2 * n + 1) == 0 or j % (2 * n + 1) == 2 * n:
                    matrice[i][j] = "_"
                elif j // (2 * n + 1) % 2 == 0 and j % (2 * n + 1) == (2 * n - i):
                    matrice[i][j] = "0"
                elif j // (2 * n + 1) % 2 == 1 and j % (2 * n + 1) == i:
                    matrice[i][j] = "0"


    for row in matrice:
if __name__ == "__main__":
        print("".join(row))
 
 
def main():
     # citim valorile n si m
     # citim valorile n si m
     n, m = map(int, input().split())
     n, m = map(int, input().split())
     # validam datele de intrare
     # validam datele de intrare
     validare(n, m)
     if validare(n, m):
 
        print("Date de intrare valide")
    # rezolvam problema si afisam rezultatul
        # rezolvam problema si afisam rezultatul
    rezolvare(n, m)
        rezolvare(n, m)
 
 
# apelam functia main pentru a rezolva problema
main()


</syntaxhighlight>
</syntaxhighlight>
==Explicatie cod:==
Funcția validare(n, m) verifică dacă valorile n și m respectă restricțiile problemei. Verifică dacă n și m se află în intervalul [1, 20]. Dacă valorile nu respectă restricțiile, se afișează un mesaj de eroare și programul se încheie folosind funcția exit().
Funcția rezolvare(n, m) construiește și afișează figura cerută în funcție de valorile n și m. Folosind două bucle for, se parcurg rândurile și coloanele figurii. Fiecare celulă a figurii este afișată ca un caracter "_" sau "0" în funcție de poziția sa în figură.
În blocul if __name__ == "__main__":, se citesc valorile n și m de la utilizator folosind funcția input() și se validează aceste date utilizând funcția validare(n, m). Dacă valorile introduse sunt valide, se afișează un mesaj de confirmare și se apelează funcția rezolvare(n, m) pentru a construi și afișa figura. Dacă valorile introduse nu sunt valide, se afișează un mesaj de eroare.

Latest revision as of 18:31, 29 June 2023

Cerința[edit | edit source]

Se citeste n și m. Să se reprezinte următoarea diagramă în funcție de n și m, în care n reprezintă înălțimea, iar m numărul de valuri care compun diagrama. Diagrama este formată din caractere 0, interiorul și exteriorul valurilor sunt alcătuite din caractere _.

Date de intrare[edit | edit source]

Programul citește numerele n m.

Date de ieșire[edit | edit source]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Date de intrare valide.", apoi programul va afișa o diagrama cerută. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Date de intrare invalide".

Restricții și precizări[edit | edit source]

1 ≤ n ≤ m ≤ 20

Exemplul 1:[edit | edit source]

Intrare

5 4

Ieșire

Date de intrare valide

__0_0_____0_0_____0_0_____0_0___

_0___0___0___0___0___0___0___0__

_0___0___0___0___0___0___0___0__

_0___0___0___0___0___0___0___0__

0_____0_0_____0_0_____0_0_____0_

Exemplul 2:

Intrare

6 8

Ieșire

__0_0_____0_0_____0_0_____0_0_____0_0_____0_0_____0_0_____0_0___

_0___0___0___0___0___0___0___0___0___0___0___0___0___0___0___0__

_0___0___0___0___0___0___0___0___0___0___0___0___0___0___0___0__

_0___0___0___0___0___0___0___0___0___0___0___0___0___0___0___0__

_0___0___0___0___0___0___0___0___0___0___0___0___0___0___0___0__

0_____0_0_____0_0_____0_0_____0_0_____0_0_____0_0_____0_0_____0_

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1"> def validare(n, m):

   """
   Functie care verifica daca valorile citite pentru n si m respecta restrictiile problemei.
   """
   if not (1 <= n <= 20 and 1 <= m <= 20):
       print("Date de intrare incorecte!")
       exit()


def rezolvare(n, m):

   """
   Functie care construieste si afiseaza figura ceruta in functie de valorile lui n si m.
   """
   # initializam matricea cu caractere "_"
   for j in range(1, n + 1):
       for i in range(1, 8 * m + 1):
           if j == 1:
               if i % 8 == 3 or i % 8 == 5:
                   print('0', end=)
               else:
                   print('_', end=)
           elif j == n:
               if i % 8 == 1 or i % 8 == 7:
                   print('0', end=)
               else:
                   print('_', end=)
           else:
               if i % 8 == 2 or i % 8 == 6:
                   print('0', end=)
               else:
                   print('_', end=)
       print()


if __name__ == "__main__":

   # citim valorile n si m
   n, m = map(int, input().split())
   # validam datele de intrare
   if validare(n, m):
       print("Date de intrare valide")
       # rezolvam problema si afisam rezultatul
       rezolvare(n, m)

</syntaxhighlight>

Explicatie cod:[edit | edit source]

Funcția validare(n, m) verifică dacă valorile n și m respectă restricțiile problemei. Verifică dacă n și m se află în intervalul [1, 20]. Dacă valorile nu respectă restricțiile, se afișează un mesaj de eroare și programul se încheie folosind funcția exit(). Funcția rezolvare(n, m) construiește și afișează figura cerută în funcție de valorile n și m. Folosind două bucle for, se parcurg rândurile și coloanele figurii. Fiecare celulă a figurii este afișată ca un caracter "_" sau "0" în funcție de poziția sa în figură. În blocul if __name__ == "__main__":, se citesc valorile n și m de la utilizator folosind funcția input() și se validează aceste date utilizând funcția validare(n, m). Dacă valorile introduse sunt valide, se afișează un mesaj de confirmare și se apelează funcția rezolvare(n, m) pentru a construi și afișa figura. Dacă valorile introduse nu sunt valide, se afișează un mesaj de eroare.