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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
Faul969
1 / 1 / 0
Регистрация: 08.10.2010
Сообщений: 28
#1

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

03.12.2011, 21:10. Просмотров 1813. Ответов 8
Метки нет (Все метки)

Народ, помогите пожалуйста с задачей. Никак не могу справиться.
Условие на скриншоте. Вариант 9. Заранее спасибо.

 Комментарий модератора 
Соседями элемента Ак в матрице назовем элементы Аkl c i–1 ≤ k ≤ i+1, j–1 ≤ l ≤ j+1,
(k, l) ≠ (i, j). Операция сглаживания матрицы дает новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы. Построить результат сглаживания заданной вещественной матрицы размером 10 на 10.
В сглаженной матрице найти сумму модулей элементов, расположенных ниже главной диагонали.
Миниатюры
Сглаживание матрицы  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2011, 21:10     Сглаживание матрицы
Посмотрите здесь:

C++ Для матрицы найти такие k, что k-я строка матрицы совпадает с k-м столбцом
Сглаживание C++
C++ Сглаживание сигнала
C++ Как исправить программу (сглаживание функции)
Поменять большие элементы в строке матрицы с маленькими элементами этой же матрицы C++
C++ Вычесть из элементов первого столбца матрицы значение максимального элемента матрицы
Выполнить сглаживание одномерного массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4661 / 2487 / 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
4005 / 2294 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
09.12.2011, 12:58     Сглаживание матрицы #4
Faul969, не работает не "что-то", а написанная вами с ошибками программа. Так и должно быть, не беспокойтесь
Вы хоть код выложите, а-то все телепаты в данный момент заняты.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4661 / 2487 / 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
4661 / 2487 / 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++ Найти количество элементов матрицы, которые совпадают с элементами другой матрицы
C++ Преобразование матрицы (удалить из матрицы столбец с наибольшей по модулю суммой элементов)
Сформировать одномерный массив из диагональных элементов матрицы. Найти след матрицы C++
"Сглаживание" массива данных C++
Сглаживание матрицы C++

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

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

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

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