2574 - Val 1

De la Universitas MediaWiki

Cerința

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

Programul citește numerele n m.

Date de ieșire

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

1 ≤ n ≤ m ≤ 20

Exemplul 1:

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

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)

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.