Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/231: Рейтинг темы: голосов - 231, средняя оценка - 4.52
3 / 3 / 1
Регистрация: 22.11.2015
Сообщений: 59
1

Обработка прямоугольной матрицы

23.05.2016, 18:21. Показов 45255. Ответов 5
Метки нет (Все метки)

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

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


В случае одной строки/столбца элемент сам себе является соседом по соответствующему направлению.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.05.2016, 18:21
Ответы с готовыми решениями:

Обработка элементов прямоугольной матрицы
Выполнить обработку элементов прямоугольной матрицы A, имеющей N строк и M столбцов. Найти сумму...

Обработка двумерных массивов. Коэффициенты СЛАУ заданы в виде прямоугольной матрицы
Коефициенты СЛАУ заданы в виде прямоугольной матрицы. При помощи допустимых превращений свести...

Матрицы: Упорядочить строки целочисленной прямоугольной матрицы по возрастанию количества
Добрый день дорогие программисты, прошу помочь написать программу. Упорядочить строки...

В каждой строке прямоугольной матрицы, кроме первой и последней, определить сумму элементов, не принадлежащих периметру матрицы, после чего сгрупп
В каждой строке прямоугольной матрицы, кроме первой и последней, определить сумму элементов, не...

Характеристики прямоугольной матрицы
Характеристикой столбца целочисленной матрицы назовём сумму модулей его отрицательных нечётных...

5
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
23.05.2016, 20:24 2
RafaProfa, ваши наработки? что уже успели за 2 часа?
0
20 / 21 / 6
Регистрация: 30.06.2015
Сообщений: 431
24.05.2016, 12:17 3
RafaProfa, https://gist.github.com/Olesya... 5380b7764c
0
3 / 3 / 1
Регистрация: 22.11.2015
Сообщений: 59
24.05.2016, 13:36  [ТС] 4
Цитата Сообщение от Zuzik Посмотреть сообщение
RafaProfa, ваши наработки? что уже успели за 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
33
34
import copy
a=[]
while True:
    raw=input()
    if raw=="end":
        break
    str=[[int(i) for i in raw.split()]]
    a[len(a):]=str
a1=copy.deepcopy(a)
for j in range(0,len(a)):
    for i in range(0,len(a[0])):
        a1[j][i]=0
        for dj in 1, -1:
            if j+dj<0:
                j1=len(a)
            elif j+dj==len(a):
                j1=-1
            else:
                j1=j
            a1[j][i]+=a[j1+dj][i]
        for di in 1, -1:
            if i+di<0:
                i1=len(a[0])
            elif i+di==len(a[0]):
                i1=-1
            else:
                i1=i
            a1[j][i]+=a[j][i1+di]
 
for j in range(len(a1)):
    for i in range(len(a1[j])):
        
        print(a1[j][i],end=' ')
    print()
0
563 / 303 / 189
Регистрация: 20.05.2016
Сообщений: 592
24.05.2016, 17:38 5
RafaProfa, это тоже (индексный) кошмар, но куда короче:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
a=[]
while True:
    raw=input()
    if raw=="end":
        break
    str_=[[int(i) for i in raw.split()]]
    a[len(a):]=str_
 
res = []
rows = len(a)
columns = len(a[0])
for i in range(rows):
    res.append([])
    for j in range(columns):
        res[i].append(a[i-1][j] + a[i+1 if i<rows-1 else 0][j] + a[i][j-1] + a[i][j+1 if j<columns-1 else 0])
print(res)
2
513 / 145 / 28
Регистрация: 18.04.2015
Сообщений: 1,879
Записей в блоге: 15
20.08.2018, 21:00 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
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
63
64
65
66
67
68
69
70
71
72
73
mat = []
 
x = ''
stroka = 0
stolb = 0
while x!= 'end':
    x = input()
    if x == 'end':
        break
    stroka = len(list(x.split()))
    mat.append(list(x.split()))
 
stolb = len(mat)
sp = [[' ' for i in range(stroka)] for j in range(stolb)]
for i in range(stolb):
    for j in range(stroka):
        mat[i][j] = int(mat[i][j])
if stolb > 1 and stroka > 1:
    for i in range(stolb):
        for j in range(stroka):
            if i == 0:
                if j == 0:
                    sp[i][j] = mat[-1][0]+mat[0][-1]+mat[1][0]+mat[0][1]
                elif j == stroka-1:
                    sp[i][j] = mat[-1][-1] + mat[0][0] + mat[1][-1] + mat[0][-2]
                else:
                    sp[i][j] = mat[-1][j] + mat[0][j-1] + mat[0][j+1] + mat[1][j]
            elif i == stolb-1:
                if j == 0:
                    sp[i][j] = mat[0][0] + mat[i][-1] + mat[-2][0] + mat[i][1]
                elif j == stroka-1:
                    sp[i][j] = mat[0][j] + mat[i][0] + mat[i][-2] + mat[-2][j]
                else:
                    sp[i][j] = mat[-1][j-1] + mat[-1][j + 1] + mat[-2][j] + mat[0][j]
            else:
                if j == 0:
                    sp[i][j] = mat[i][j+1]+mat[i-1][0]+mat[i+1][0]+mat[i][-1]
                elif j == stroka-1:
                    sp[i][j] = mat[i][j-1] + mat[i-1][-1] + mat[i+1][-1] + mat[i][0]
                else:
                    sp[i][j] = mat[i-1][j] + mat[i+1][j] + mat[i][j+1] + mat[i][j-1]
    for i in range(stolb):
        for j in range(stroka):
            print(sp[i][j],end=' ')
        print()
elif stroka > 1:
    for i in range(stolb):
        for j in range(stroka):
            if j == 0:
                sp[i][j] = 2*mat[i][j]+mat[i][-1]+mat[i][1]
            elif j == stroka-1:
                sp[i][j] = 2*mat[i][j]+mat[i][0]+mat[i][-2]
            else:
                sp[i][j] = 2*mat[i][j]+mat[i][j+1]+mat[i][j-1]
    for i in range(stolb):
        for j in range(stroka):
            print(sp[i][j],end=' ')
        print()
elif stolb > 1:
    for i in range(stolb):
        for j in range(stroka):
            if i == 0:
                sp[i][j] = 2*mat[i][j]+mat[-1][j]+mat[1][j]
            elif i == stolb-1:
                sp[i][j] = 2*mat[i][j]+mat[0][j]+mat[-2][j]
            else:
                sp[i][j] = 2*mat[i][j]+mat[i+1][j]+mat[i-1][j]
    for i in range(stolb):
        for j in range(stroka):
            print(sp[i][j],end=' ')
        print()
else:
    print(mat[0][0]*4)
Добавлено через 2 минуты
Дмитрий Яновский:

Python
1
2
3
4
5
6
7
8
9
10
line, matrix, lI = input(), [], 0
 
while line != 'end':
    matrix +=[[int(i) for i in line.split()]]
    line = input()
    lI += 1
 
lJ = len(matrix[0])
 
[([print(matrix[i - 1][j] + matrix[i][j - 1] + matrix[i][(j + 1) % lJ] + matrix[(i + 1) % lI][j], end=' ') for j in range(lJ)], print()) for i in range(lI)]
0
20.08.2018, 21:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.08.2018, 21:00
Помогаю со студенческими работами здесь

Транспонирование прямоугольной матрицы
Доброго времени суток! Возникла проблема при транспонировании прямоугольной матрицы....

Транспонирование прямоугольной матрицы
Ребята, есть у кого готовый исходник для транспонирования прямоугольной матрицы nхm? Размерность,...

Преобразование прямоугольной матрицы
Выполнить над прямоугольной матрицей В размером m х n последовательность действий, указанную в...

Сортировка прямоугольной матрицы
Как сделать, чтобы сортировало матрицу в таком порядке: -----------&gt; -----------&gt; -----------&gt;...

Преобразование прямоугольной матрицы
Люди добрые, пожалуйста, помогите. Выполнить над прямоугольной матрицей В размером m х n...

Ранг прямоугольной матрицы
Здравствуйте! Мне необходимо найти ранг прямоугольной матрицы. Для этого матрицу нужно привести к...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru