Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
6 / 4 / 2
Регистрация: 13.02.2019
Сообщений: 46
1

Массив: Вывести матрицу, у которой каждый элемент равен сумме элементов матрицы на заданных позициях...

04.04.2019, 17:13. Просмотров 2317. Ответов 3
Метки нет (Все метки)


Всем еще раз добрый день.

Есть задача:

Напишите программу, на вход которой подаётся прямоугольная матрица в виде последовательности строк, заканчивающихся строкой, содержащей только строку "end" (без кавычек)

Программа должна вывести матрицу того же размера, у которой каждый элемент в позиции i, j равен сумме элементов первой матрицы на позициях (i-1, j), (i+1, j), (i, j-1), (i, j+1). У крайних символов соседний элемент находится с противоположной стороны матрицы.

В случае одной строки/столбца элемент сам себе является соседом по соответствующему направлению.

Я написал код! но мне нужна помощь, в описании для крайнего столбца, и последней строки, неправильно считает (((
просто помочь откорректировать код! и все.


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
lst = []
st = ''
sub = 0
out_list = []
while st != 'end':
    st = input()
    if st != 'end':
        st = st.split(' ')
        a = []
        for z in st: 
            a.append(int(z))
        lst.append(a)
i = 0
j = 0
for i in range(len(lst)):
    row_lst = []
    for j in range(len(lst[i])):
        if j+1 < len(lst[i]) and i+1 < len(lst):
            sub = lst[i][j-1] + lst[i][j+1] + lst[i-1][j] + lst[i+1][j]
            sub = str(sub)
            row_lst.append(sub)
        else:
            sub = lst[i][j-1] + lst[i][0] + lst[i-1][j] + lst[0][j]
            sub = str(sub)
            row_lst.append(sub)
    print(' '.join(row_lst))
Добавлено через 6 минут
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
lst = []
st = ''
sub = 0
out_list = []
while st != 'end':
    st = input()
    if st != 'end':
        st = st.split(' ')
        a = []
        for z in st: 
            a.append(int(z))
        lst.append(a)
for i in range(len(lst)):
    row_lst = []
    for j in range(len(lst[i])):
        if j+1 < len(lst[i]) and i+1 < len(lst):
            sub = lst[i][j-1] + lst[i][j+1] + lst[i-1][j] + lst[i+1][j]
            sub = str(sub)
            row_lst.append(sub)
        elif j+1 == len(lst[i]) and i+1 < len(lst):
            sub = lst[i][j-1] + lst[i][0] + lst[i-1][j] + lst[i][j]
            sub = str(sub)
            row_lst.append(sub)
        elif j+1 < len(lst[i]) and i+1 == len(lst):
            sub = lst[i][j-1] + lst[i][j+1] + lst[i-1][j] + lst[0][j]
            sub = str(sub)
            row_lst.append(sub)
        else:
            sub = lst[i][j-1] + lst[i][0] + lst[i-1][j] + lst[0][j]
            sub = str(sub)
            row_lst.append(sub)
    print(' '.join(row_lst))
ввел небольшие коррекции, в код! но все равно что то пошло не так!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2019, 17:13
Ответы с готовыми решениями:

Вывести матрицу того же размера, у которой каждый элемент в позиции i, j равен сумме элементов первой матрицы
Напишите программу, на вход которой подаётся прямоугольная матрица в виде последовательности строк,...

Определить квадратную матрицу, каждый элемент которой равен сумме элементов соответствующей строки
Добрый день! Пожалуйста, помогите с программой. В функции Input Вводится массив с клавиатуры, а...

Напечатать матрицу D, каждый элемент которой равен разности соответствующих элементов заданных матриц Е и F
1)вычислить и напечатать матрицу D, каждый элемент которой равен разности соответствующих элементов...

Массив: Создать третий массив, каждый элемент которого равен сумме элементов двух заданных массивов.
Приветствую всех! Не откажите в помощи бедному студенту.. Помогите написать программу в которой...

__________________
Помогаю в написании студенческих работ здесь.
Записывайтесь на профессиональные курсы Fullstack-разработчиков на Python
3
1289 / 757 / 172
Регистрация: 22.02.2018
Сообщений: 2,174
Записей в блоге: 3
04.04.2019, 23:01 2
Лучший ответ Сообщение было отмечено m0nte-cr1st0 как решение

Решение

FedorovAleksei, мне проще было свой код написать, чем разбираться в Вашем.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
lst = []
st = ''
sub = 0
#out_list = []
M = []
while st != 'end':
    st = input()
    if st != 'end':
        #st = st.split(' ')
        #a = []
        #for z in st: 
            #a.append(int(z))
        a = list(map(int, st.split()))        # метод split() по умолчанию разбивает по пробелам.
        lst.append(a)
n = len(lst)                  # количество строк или столбцов квадратной матрицы.
for i in range(n):
    row_lst = []
    if i == 0:
        for j in range(n):
            if j == 0:
                sub = lst[n-1][0] + lst[i+1][0] + lst[i][n-1] + lst[i][j+1]
                row_lst.append(sub)
            elif j != 0 and j != n-1:
                sub = lst[n-1][j] + lst[i+1][j] + lst[i][j-1] + lst[i][j+1]
                row_lst.append(sub)
            elif j == n-1:
                sub = lst[n-1][j] + lst[i+1][j] + lst[i][j-1] + lst[i][0]
                row_lst.append(sub)
        M.append(row_lst)
    elif i != 0 and i != n-1:
        for j in range(n):
            if j == 0:
                sub = lst[i-1][0] + lst[i+1][0] + lst[i][n-1] + lst[i][j+1]
                row_lst.append(sub)
            elif j != 0 and j != n-1:
                sub = lst[i-1][j] + lst[i+1][j] + lst[i][j-1] + lst[i][j+1]
                row_lst.append(sub)
            elif j == n-1:
                sub = lst[i-1][j] + lst[i+1][j] + lst[i][j-1] + lst[i][0]
                row_lst.append(sub)
                M.append(row_lst)
    elif i == n-1:
        for j in range(n):
            if j == 0:
                sub = lst[i-1][0] + lst[0][0] + lst[i][n-1] + lst[i][j+1]
                row_lst.append(sub)
            elif j != 0 and j != n-1:
                sub = lst[i-1][j] + lst[0][j] + lst[i][j-1] + lst[i][j+1]
                row_lst.append(sub)
            elif j == n-1:
                sub = lst[i-1][j] + lst[0][j] + lst[i][j-1] + lst[i][0]
                row_lst.append(sub)
                M.append(row_lst)
 
 
def printMatrix ( matrix ):
    for row in matrix:
        for x in row:
            print ( "{:4d}".format(x), end = "" )
        print ()
 
printMatrix(M)
Добавлено через 29 минут
FedorovAleksei, одну ошибку у Вас нашел, теперь трехмерную матрицу считает правильно. Другие размерности проверите сами.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
lst = []
st = ''
sub = 0
out_list = []
while st != 'end':
    st = input()
    if st != 'end':
        st = st.split(' ')
        a = []
        for z in st: 
            a.append(int(z))
        lst.append(a)
for i in range(len(lst)):
    row_lst = []
    for j in range(len(lst[i])):
        if j+1 < len(lst[i]) and i+1 < len(lst):
            sub = lst[i][j-1] + lst[i][j+1] + lst[i-1][j] + lst[i+1][j]
            sub = str(sub)
            row_lst.append(sub)
        elif j+1 == len(lst[i]) and i+1 < len(lst):
            sub = lst[i][j-1] + lst[i][0] + lst[i-1][j] + lst[i+1][j] # lst[i][j] ошибка
            sub = str(sub)
            row_lst.append(sub)
        elif j+1 < len(lst[i]) and i+1 == len(lst):
            sub = lst[i][j-1] + lst[i][j+1] + lst[i-1][j] + lst[0][j]
            sub = str(sub)
            row_lst.append(sub)
        else:
            sub = lst[i][j-1] + lst[i][0] + lst[i-1][j] + lst[0][j]
            sub = str(sub)
            row_lst.append(sub)
    print(' '.join(row_lst))
0
6 / 4 / 2
Регистрация: 13.02.2019
Сообщений: 46
08.04.2019, 10:27  [ТС] 3
Я на самом деле решил задачу сам через 2 минуты как выложил в сеть

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
lst = []
st = ''
sub = 0
out_list = []
while st != 'end':
    st = input()
    if st != 'end':
        st = st.split(' ')
        a = []
        for z in st: 
            a.append(int(z))
        lst.append(a)
for i in range(len(lst)):
    row_lst = []
    for j in range(len(lst[i])):
        if j+1 < len(lst[i]) and i+1 < len(lst):
            sub = lst[i][j-1] + lst[i][j+1] + lst[i-1][j] + lst[i+1][j]
            sub = str(sub)
            row_lst.append(sub)
        elif j+1 == len(lst[i]) and i+1 < len(lst):
            sub = lst[i][j-1] + lst[i][0] + lst[i-1][j] + lst[i+1][j]
            sub = str(sub)
            row_lst.append(sub)
        elif j+1 < len(lst[i]) and i+1 == len(lst):
            sub = lst[i][j-1] + lst[i][j+1] + lst[i-1][j] + lst[0][j]
            sub = str(sub)
            row_lst.append(sub)
        else:
            sub = lst[i][j-1] + lst[i][0] + lst[i-1][j] + lst[0][j]
            sub = str(sub)
            row_lst.append(sub)
    print(' '.join(row_lst))
Вот он рабочий код
0
1289 / 757 / 172
Регистрация: 22.02.2018
Сообщений: 2,174
Записей в блоге: 3
08.04.2019, 14:31 4
FedorovAleksei, В таких случаях сообщают об этом, что бы люди попусту не тратили свое время. На будущее имейте это ввиду.

Добавлено через 6 минут
Кстати я занес Вас в черный список и в будущем уже помогать не буду.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2019, 14:31

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Построить матрицу B, элемент bij которой равен сумме элементов данной матрицы
Дана квадратная матрица А n-го порядка. Построить матрицу B, элемент bij которой равен сумме...

Получить новую матрицу {b ij} n, n, элемент bij которой равен сумме элементов данной матрицы
Данная Действительная квадратная матрица {a ij} n, n. Получить новую матрицу {b ij} n, n, элемент...

Получить третий массив, каждый элемент которого равен сумме элементов с тем же номером в заданных массивах
11.247. Даны два массива одного размера. Получить третий массив, каждый элемент которого...

Получить квадратную матрицу, элемент которой равен сумме элементов данной матрицы, расположенных в области
Дана квадратная марица действительных числе размерности n(n&lt;=15). Получить квадратную матрицу,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.