0226 - Gen Mat 13

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

Programul afișează pe ecran matricea construită, câte o linie a matricei pe câte o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spaţiu.

Restricții și precizări

  • 2≤n≤24
  • 1<a<n
  • 1<b<n
  • liniile şi coloanele sunt numerotate de la 1

Exemplul 1

Intrare
5 4 3
Iesire
1 1 0 2 2
1 1 0 2 2
1 1 0 2 2
0 0 0 0 0
3 3 0 4 4

Exemplul 2

Intrare
0 0 0
Iesire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare

#0226 - Gen Mat 13
def construieste_matrice(n, a, b):
    # inițializăm matricea cu zero
    matrice = [[0 for _ in range(n)] for _ in range(n)]
    # parcurgem fiecare element din matrice
    for i in range(n):
        for j in range(n):
            # dacă elementul este pe poziția a sau b, setăm valoarea sa la zero
            if i == a-1 or j == b-1:
                matrice[i][j] = 0
            # dacă elementul se află deasupra și la stânga (a,b), setăm valoarea la 1
            elif i < a-1 and j < b-1:
                matrice[i][j] = 1
            # dacă elementul se află deasupra și la dreapta elementului (a,b), setăm valoarea la 2
            elif i < a-1 and j > b-1:
                matrice[i][j] = 2
            # dacă elementul se află sub (a,b) și la stânga, setăm valoarea sa la 3
            elif i > a-1 and j < b-1:
                matrice[i][j] = 3
            # dacă elementul se află sub (a,b) și la dreapta, setăm valoarea la 4
            else:
                matrice[i][j] = 4

    return matrice

if __name__ == '__main__':
    # citim de la tastatură dimensiunea matricei și pozițiile a și b 
    n = int(input("Introduceți dimensiunea n a matricei: "))
    a = int(input("Introduceți poziția liniei a: "))
    b = int(input("Introduceți poziția coloanei b: "))

    # verificăm restricțiile
    if a < 1 or a > n or b < 1 or b > n:
         print("Datele de intrare nu corespund restricțiilor impuse.")
    else:
        print("Datele de intrare corespund restricțiilor impuse.")
        # construim matricea și o afișăm
        matrice = construieste_matrice(n, a, b)
        print()
        for linie in matrice:
            print(*linie)