Форум программистов, компьютерный форум CyberForum.ru

Сглаживание матрицы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
Faul969
1 / 1 / 0
Регистрация: 08.10.2010
Сообщений: 28
03.12.2011, 21:10     Сглаживание матрицы #1
Народ, помогите пожалуйста с задачей. Никак не могу справиться.
Условие на скриншоте. Вариант 9. Заранее спасибо.

 Комментарий модератора 
Соседями элемента Ак в матрице назовем элементы Аkl c i–1 ≤ k ≤ i+1, j–1 ≤ l ≤ j+1,
(k, l) ≠ (i, j). Операция сглаживания матрицы дает новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы. Построить результат сглаживания заданной вещественной матрицы размером 10 на 10.
В сглаженной матрице найти сумму модулей элементов, расположенных ниже главной диагонали.
Миниатюры
Сглаживание матрицы  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
03.12.2011, 22:04     Сглаживание матрицы #2
Если уже имеется матрица A[][] размером N*M, то формируем новую матрицу B[N][M] таким образом:
C++
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
int tmp;
for(i=0; i<N; i++)
    for(j=0; j<M; j++)
    {
        tmp=0;
        if(i>0)
        {
            tmp+=A[i-1][j];
            if(j>0)
                tmp+=A[i-1][j-1];
            if(j<M-1)
                tmp+=A[i-1][j+1];
        }
        if(i<N-1)
        {
            tmp+=A[i+1][j];
            if(j>0)
                tmp+=A[i+1][j-1];
            if(j<M-1)
                tmp+=A[i+1][j+1];           
        }
        if(j>0)
            tmp+=A[i][j-1];
        if(j<M-1)
            tmp+=A[i][j+1];
        B[i][j]=tmp;
    }
Faul969
1 / 1 / 0
Регистрация: 08.10.2010
Сообщений: 28
09.12.2011, 11:13  [ТС]     Сглаживание матрицы #3
Что-то не работает...
BRcr
 Аватар для BRcr
4003 / 2292 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
09.12.2011, 12:58     Сглаживание матрицы #4
Faul969, не работает не "что-то", а написанная вами с ошибками программа. Так и должно быть, не беспокойтесь
Вы хоть код выложите, а-то все телепаты в данный момент заняты.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
09.12.2011, 13:09     Сглаживание матрицы #5
Цитата Сообщение от Faul969 Посмотреть сообщение
Что-то не работает...
Весь код покажите.
Faul969
1 / 1 / 0
Регистрация: 08.10.2010
Сообщений: 28
12.12.2011, 10:57  [ТС]     Сглаживание матрицы #6
C++
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
int N=5;
    int M=5;
    int A[5][5]={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};
    int B[5][5];
    int tmp;
    for(int i=0; i<N; i++)
        for(int j=0; j<M; j++)
        {
                tmp=0;
                if(i>0)
                {
                        tmp+=A[i-1][j];
                        if(j>0)
                                tmp+=A[i-1][j-1];
                        if(j<M-1)
                                tmp+=A[i-1][j+1];
                }
                if(i<N-1)
                {
                        tmp+=A[i+1][j];
                        if(j>0)
                                tmp+=A[i+1][j-1];
                        if(j<M-1)
                           
                            tmp+=A[i+1][j+1];                       
                }
                if(j>0)
                        tmp+=A[i][j-1];
                if(j<M-1)
                        tmp+=A[i][j+1];
                B[i][j]=tmp;
        }
    for(int y=0; y<5; y++)
        for(int d=0; d<5; d++)
            cout << B[y][d] << "   ";
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
12.12.2011, 11:27     Сглаживание матрицы #7
Faul969, странно что не работает. перезагрузить калькулятор надо. А если и после не заработает, то еще раз... и так пока не запустится. Скорее всего процессор отключает регистр при загрузке системы и уходит в защищенный режим. Если так и не запустится то надо показать специалисту.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
12.12.2011, 11:51     Сглаживание матрицы #8
C
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
74
75
#include <stdio.h>
 
int main()
{
    double A[10][10], B[10][10], tmp;
    int i, j, N=10, col;
    for(i=0; i<N; i++)
        for(j=0; j<N; j++)
        {
            printf("[%d][%d]= ", i, j);
            scanf("%lf", &A[i][j]);
        }
    printf("Ishodn matrica:\n");
    for(i=0; i<N; i++)
    {
        for(j=0; j<N; j++)
            printf("%lf ", A[i][j]);
        printf("\n");
    }
    for(i=0; i<N; i++)
        for(j=0; j<N; j++)
        {
                tmp=.0; col=0;
                if(i>0)
                {
                        tmp+=A[i-1][j];
                        col++;
                        if(j>0)
                        {
                            tmp+=A[i-1][j-1];
                            col++;
                        }
                        if(j<N-1)
                        {
                            tmp+=A[i-1][j+1];
                            col++;
                        }
                }
                if(i<N-1)
                {
                        tmp+=A[i+1][j];
                        col++;
                        if(j>0)
                        {
                            tmp+=A[i+1][j-1];
                            col++;
                        }
                        if(j<N-1)
                        {
                            tmp+=A[i+1][j+1];                       
                            col++;
                        }
                }
                if(j>0)
                {
                    tmp+=A[i][j-1];
                    col++;
                }
                if(j<N-1)
                {
                    tmp+=A[i][j+1];
                    col++;
                }
                B[i][j]=tmp/col;
        }
    printf("Sglag matrica:\n");
    for(i=0; i<N; i++)
    {
        for(j=0; j<N; j++)
            printf("%lf ", B[i][j]);
        printf("\n");
    }
 
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2011, 12:24     Сглаживание матрицы
Еще ссылки по теме:

C++ Для заданной матрицы найти такие k что k-я строка матрицы совпадает с k-м столбцом
"Сглаживание" массива данных C++
Сглаживание матрицы C++

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

Или воспользуйтесь поиском по форуму:
Faul969
1 / 1 / 0
Регистрация: 08.10.2010
Сообщений: 28
12.12.2011, 12:24  [ТС]     Сглаживание матрицы #9
Сори, все работает)) Но не получается только с суммированием под главной диагональю...

Добавлено через 18 минут
Все работает)) Всем спасибо))
Yandex
Объявления
12.12.2011, 12:24     Сглаживание матрицы
Ответ Создать тему
Опции темы

Текущее время: 01:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru