Практикалық жұмыс 12 Екі өлшемді массивтермен жұмыс Жұмыстың мақсаты


Жауабы: 5. Массивті күрделі өңдеу есебі



бет3/5
Дата15.11.2022
өлшемі204,16 Kb.
#50265
1   2   3   4   5
Жауабы:





5. Массивті күрделі өңдеу есебі
n жол және n бағаннан тұратын квадрат матрица берілсін. Бас диоганальда орналасқан элементтер үшін (сол жақ жоғары бұрыштан оң жақ төменгі бұрыш, яғни, i==j шарты орындалатын A[i][j] элементтері) 0 мәнін, бас диагональдан жоғары орналасқан элементтерге - 1 мәнін, бас диагональдан төмен орналасқан элементтер үшін 2 мәнін меншіктеп, массив құрайтын программа құрыңдар (мысалы n==3):



0 1 1 
2 0 1 


2 2 0 

Осы есепті шешудің бірнеше жолын қарастырайық. 




Бірінші әдіс
Бас диагональдан жоғары орналасқан элементтер - ij шарты орындалатын A[i][j] элементтер. Олай болса, біз i мен j мәндері бойынша A[i][j] мәндерін анықтай аламыз. Сол кезде келесі алгоритмді аламыз:

for i in range(n):


for j in range(n):
if i < j:
A[i][j] = 0
elif i > j:
A[i][j] = 2
else:
A[i][j] = 1

Төменде есептің программасы келтірілген:


n=3
A = []


# массивті 5 сандарымен толтырамыз
for i in range(n):
A.append([5]*n)
# толтырылған массивті шығару
for i in range(n):
for j in range(n):
print(A[i][j], end = ' ')
print()
# массивтегі бас диагональ, одан жоғары және төмен элементтерді өзгертеміз
for i in range(n):
for j in range(n):
if i < j:
A[i][j]=0
elif i > j:
A[i][j]=2
else:
A[i][j]=1
# Өзгертілген массивті шығару
print('Өзгертілген массив')
for i in range(n):
for j in range(n):
print(A[i][j], end = ' ')
print()

Жауабы:




Екінші әдіс
Бұл алгоритм if құрылымын массивтің әрбір элементін өңдеу үшін 2 рет қолданады. Егер агоритмді күрделентіретін болсақ, онда біз шартты құрылымды мүлде қолданбаймыз.

Алдымен бас диагональ элементтерін толтырайық. Ол үшін бір цикл қолданамыз:


for i in range(n):


A[i][i] = 1
Ары қарай бас диагональдан жоғары орналасқан элементтерді 0 мәнімен толтырамыз, ол үшін і нөмірлі әрбір j=i+1, ..., n-1 жол үшін A[i][j] элементтерін алмастырамыз. Мұнда бізге кіріктірілген цикл керек болады:

for i in range(n):


for j in range(i + 1, n):
A[i][j] = 0
Осыған ұқсас бас диагональдан төмен орналасқан элементтерді 2 мәнімен толтырамыз, ол үшін j=0, ..., i-1үшін A[i][j] элементтерін алмастырамыз.

for i in range(n):


for j in range(0, i):
A[i][j] = 2
Сонымен қатар, ішкі циклдарды бір циклған біріктіруге болады, ол кезде шағын шешім аламыз:
for i in range(n):
for j in range(0, i):
A[i][j] = 2
A[i][i] = 1
for j in range(i + 1, n):
A[i][j] = 0


n=3
A = []


# массивті 5 сандарымен толтырамыз
for i in range(n):
A.append([5]*n)
# толтырылған массивті шығару
for i in range(n):
for j in range(n):
print(A[i][j], end = ' ')
print()
# массивтегі бас диагональ, одан жоғары және төмен элементтерді өзгертеміз
for i in range(n):
for j in range(0, i):
A[i][j] = 2
A[i][i] = 1
for j in range(i + 1, n):
A[i][j] = 0
# Өзгертілген массивті шығару
print('Өзгертілген массив')
for i in range(n):
for j in range(n):
print(A[i][j], end = ' ')
print()


Достарыңызбен бөлісу:
1   2   3   4   5




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет