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

Матрицы - C++

Восстановить пароль Регистрация
 
paRadoX-2
0 / 0 / 0
Регистрация: 24.10.2010
Сообщений: 18
29.05.2011, 16:07     Матрицы #1
Даны две целые квадратные матрицы шестого порядка. Вычислить суммы элементов выше главной диагонали и ниже нее. Определить, можно ли отражением относительно главной диагонали преобразовать одну в другую.

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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
int lol(int m[6][6])
{int i,j,cn=0,cp=0,s=0;
for(j=1;j<=6;++j)for(i=0;i<=j-1;++i)cn+=m[i][j];
for(i=1;i<=6;++i)for(j=0;j<=i-1;++j)cp+=m[i][j];
for(i=0;i<6;++i)for(j=0;j<6;++j)if(m[i][j]!=m[j][i])s=1;
if(s==0)printf("OTPA}|{EHA"); else printf("HE OTPA}|{EHA");
printf("\n%i\n%i",cn,cp);
return 0;
}
int main()
{
int a[6][6]={{1,4,1,4,2,9},
             {4,1,7,5,6,1}, 
             {1,7,1,1,2,5}, 
             {4,5,1,1,2,4},
             {2,6,2,2,1,6},
             {9,1,5,4,6,1}};
 
int b[6][6]={{5,9,9,9,9,9}, 
             {4,5,9,9,9,9}, 
             {8,7,1,1,9,9}, 
             {1,5,8,1,9,9},
             {2,6,7,2,2,9},
             {1,6,5,5,6,1}}; 
lol(a); 
printf("\n\n");
lol(b);           
getch();
}

Хотя отражена матрица или нет прога определяет правильно во всех случаях, но вот суммы элементов выше главной диагонали и ниже нее для матрицы А считает плохо (много цифр всяких)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2011, 16:07     Матрицы
Посмотрите здесь:

C++ На главной диагонали новой матрицы разместить элементы заданного столбца исходной матрицы
C++ какими средствами пользоваться для того, чтобы умножать матрицы, складывать матрицы?
Если след матрицы A[n][m] больше 50, то все эелементы матрицы увеличить на 2. C++
Матрицы: нахождение сумм положительных элементов строк каждой матрицы C++
Матрицы: удалить из матрицы столбцы, в которых есть равные элементы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Just_dake
1 / 1 / 1
Регистрация: 21.03.2011
Сообщений: 78
29.05.2011, 16:18     Матрицы #2
C
1
2
3
4
...
if(i<j) cn=cn+m[i][j];
if(i>j) cp=cp+m[i][j];
...
paRadoX-2
0 / 0 / 0
Регистрация: 24.10.2010
Сообщений: 18
29.05.2011, 16:19  [ТС]     Матрицы #3
Кстати, если матрицу А скопировать и сделать из неё третью матрицу ЦЕ, то для матрицы ЦЕ функция будет работать правильно.
Почему так?
Матрица А больна раком?
Just_dake
1 / 1 / 1
Регистрация: 21.03.2011
Сообщений: 78
29.05.2011, 16:20     Матрицы #4
Вообще-то суммы выше,ниже гл.диагонали опред. так.
paRadoX-2
0 / 0 / 0
Регистрация: 24.10.2010
Сообщений: 18
29.05.2011, 16:22  [ТС]     Матрицы #5
Цитата Сообщение от Just_dake Посмотреть сообщение
Вообще-то суммы выше,ниже гл.диагонали опред. так.
так не работает у меня
Just_dake
1 / 1 / 1
Регистрация: 21.03.2011
Сообщений: 78
29.05.2011, 16:30     Матрицы #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
#include <conio.h>
#include <stdio.h>
#include<stdlib.h>
main ()
{
int a[5][5];
int i,j,k=0,s=0;
clrscr();
randomize();
for (i=0; i<5; i++)
{for (j=0; j<5; j++)
{ a[i][j]=random(20);
 printf(" %2i",a[i][j]);
 }
printf("\n\n");
}
for (i=0; i<5; i++)
 for (j=0; j<5; j++)
if (i<j) s+=a[i][j];
for (i=0; i<5; i++)
 for (j=0; j<5; j++)
if (i>j) k+=a[i][j];
printf("\ns=%i k=%i",s,k);
getch();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2011, 16:32     Матрицы
Еще ссылки по теме:

Поменять большие элементы в строке матрицы с маленькими элементами этой же матрицы C++
C++ В заданной матрицы А (6, 4) найти значение крупнейшего по модулю элемента матрицы

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

Или воспользуйтесь поиском по форуму:
paRadoX-2
0 / 0 / 0
Регистрация: 24.10.2010
Сообщений: 18
29.05.2011, 16:32  [ТС]     Матрицы #7
Мой вопрос был про то что не считает именно для матрицы А. Для других матриц всё работвет верно.
Yandex
Объявления
29.05.2011, 16:32     Матрицы
Ответ Создать тему
Опции темы

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