Cześć
Mam problem mam zrobić program który po wpisaniu liczby n zrobi mi macierz nxn w której po przekatnej wyświetlą sie liczby n a ponizej i powyżej liczby o 1 mniejsza i tak wszystko bedzie dążyło do 1 . Calkowcie nie wiem jak sie za to zabrać mam do tego użyć pętli for Choć i tak pewnie tego nie ogarnę wiec prosze was o pomoc
0
1
Załóżmy, że na wejście przychodzi macierz a
, kwadratowa, o wymiarze n
, pseudokod, trochę podobny do pythona:
def synch_matrix(a, n):
for x in range(n): # range: x iteruje od zera - bo bez dolnego progu, do n - 1, standartowo, 0 base indexing
a[x][x] = n # najpierw ustaw n na przekątnej głównej
# górna częśc macierzy:
for k in range(0, n): # k idzie po wierszach
s = 0 # pomocniczy indeks na 0
for m in range(k + 1, n): # m idzie przez wiersze (po kolumnach), od pierwszego elementu na prawo za przekatną główną
a[k][m] = n - (s + 1) # tu ustawianie wartości elementu, indeksem s: n - 1, n - 2, .., 1
s += 1 # inkrement pomocniczy, obvious
# dolna częśc macierzy, tak samo tylko jedziemy od dołu
for k in range(n - 1, -1, -1): # iteruj k od n - 1, do 0 (do większych od -1), z krokiem -1, bo się cofamy, taka składnia pseudokodu
# i dalej analogicznie...
s = 0
for m in range(k - 1, -1, -1):
a[k][m] = n - (s + 1)
s += 1
return a # na końcu zwróć zmienioną tablicę
print("------------ wynik:")
print(synch_matrix(a, 5))
# -->
------------ wynik:
[[5 4 3 2 1]
[4 5 4 3 2]
[3 4 5 4 3]
[2 3 4 5 4]
[1 2 3 4 5]]