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

Симметрия главной диагонали. - C++

Восстановить пароль Регистрация
 
C1keu
1 / 1 / 0
Регистрация: 19.02.2010
Сообщений: 32
09.10.2011, 14:21     Симметрия главной диагонали. #1
Ребят,вобщем у меня есть задача: Дана матрица A(6,6)Определить являеться ли она симметричной относительной глвной диагонали.Если да то все эл.диагонали заменить нулями.

Подскажите код для проверки на симметричность относительно главной диагонали.

Если раписать матрицу:
A00 A01 A02
A10 A11 A12
A20 A21 A22

Нужно будет поменять местами в коде А10 с А01 и т.д Тоесть буду менять Аij с Aji.Но как грамотно написать,не могу догнать =)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2011, 14:21     Симметрия главной диагонали.
Посмотрите здесь:

C++ Разместить на главной диагонали матрицы суммы элементов, лежщих на диагоналях, перпендикулярных к главной
Отсортировать диагонали матрицы,расположенные выше главной, по убыванию элементов, а диагонали матрицы, расположенные ниже главной, по возрастанию C++
Элементы, расположеные на главной диагонали, в первых 3 строках выше диагонали и в последних 2 строках ниже диагонали переместить в одномерный массив C++
C++ вычислить сумму элементов матрицы над главной диагональю под главной диагональю и на главной диагонали
Вывести на экран значения тех эле-ментов, лежащих выше главной диагонали, которые больше всех элементов, лежащих ниже главной диагонали C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
09.10.2011, 14:31     Симметрия главной диагонали. #2
примерно так:
C++
1
2
3
4
5
6
7
8
9
//тут ввод матрицы и т.п.
for(int i=1;i<6;i++)
   for(j=0;j<i;j++)
       if(A[i][j]!=A[j][i]) 
       {
            cout<<"Матрица несимметричная!";
            return 0;
       }
/*сюда программа дойдет, если у тебя матрица будет симметричная, и тут ты должен элементы диагонали менять на 0*/
C1keu
1 / 1 / 0
Регистрация: 19.02.2010
Сообщений: 32
13.10.2011, 14:49  [ТС]     Симметрия главной диагонали. #3
Спасибо

Добавлено через 23 часа 55 минут
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
#include<stdio.h>
main()
{
 float A[9][9]; int i,j,n,m,l;
 printf("Введите размер матрицы=");
 scanf("%d%d",&n,&m);
 printf("Введите матрицу A[%d][%d]\n",n,n);
 for(i=0;i<n;i++)
  for(j=0;j<m;j++)
  scanf("%f",A[i][j]);
 for(l=1;l==1;)
 {
  l=0;
  for(i=1;i<n;i++)
   for(j=0;j<i;i++)
   if(A[i][j]!=A[j][i]) printf("Матрица не симметрична");
   l=1;
 }
 A[i][i]=0;
 printf("Преобразованная матрица\n");
 for(i=0;i<n;i++)
 {
  for(j=0;j<m;j++)
   printf("%7.2f",A[i][j]);
   printf("\n");
 }
}
В общем у меня получилось так.Но не могу понять,после того как я ввожу размер матрицы,пишет scanf: floating points formats not linked
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
13.10.2011, 15:29     Симметрия главной диагонали. #4
по-моему в сканфе амперсанд пропустил
scanf("%f",&A[i][j]);
C1keu
1 / 1 / 0
Регистрация: 19.02.2010
Сообщений: 32
13.10.2011, 17:13  [ТС]     Симметрия главной диагонали. #5
Был он там,я просто уже без него попробовал и забыл добавить обратно)
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
13.10.2011, 18:15     Симметрия главной диагонали. #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
#include<stdio.h>
int main()
{
    float A[9][9];
    int N;
    printf("Enter N: ");
    scanf("%d", &N);
    printf("Enter matrix elements (%d total):\n",N*N);
    int i,j;
    for(i=0;i<N;i++)
        for(j=0;j<N;j++)
            scanf("%f", &A[i][j]);
    int flag=1;
    for(i=1;i<N;i++)
        for(j=0;j<i;j++)
            if(A[i][j]!=A[j][i])
            {
                flag=0;
                break;
            }
    if(flag)
    {
        for(i=0;i<N;i++)
            A[i][i]=0;
        printf("\nMatrix is symmetric\nNew matrix:\n");
    }
    else
        printf("\nMatrix not symmetric! So no transform\nOld matrix:\n");
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++)
            printf("%.2f ", A[i][j]);
        printf("\n");
    }
}
C1keu
1 / 1 / 0
Регистрация: 19.02.2010
Сообщений: 32
14.10.2011, 14:58  [ТС]     Симметрия главной диагонали. #7
Очень странно,с вашим кодом точно такая же ошибка.
Работаю в turbo C,мб в нем самом проблемма?
И скажите почему у вас N*N?
C++
1
printf("Enter matrix elements (%d total):\n",N*N);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2011, 15:15     Симметрия главной диагонали.
Еще ссылки по теме:

Верно ли, что среднее арифметическое элементов выше главной диагонали больше среднего арифметического элементов ниже главной диагонали C++
Определить: сумма элементов выше главной диагонали меньше суммы элементов ниже главной диагонали? C++
Обменять элементы массива на главной диагонали с элементами на побочной диагонали C++

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

Или воспользуйтесь поиском по форуму:
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
14.10.2011, 15:15     Симметрия главной диагонали. #8
турбо С - очень старый компилятор, он не поддерживает многих вещей.
попробуй все объявления переменных из моего кода вынести в начало функции main()
если это не поможет, то тут я не знаю, что подсказать, никогда не писала в этом компиляторе. Единственное, что могу сказать - поставь более новый компилятор, список есть в начале раздела в теме Бесплатные IDE

N*N - потому что в массиве размерностью N строк N столбцов - N*N элементов всего. Поскольку массив квадратный, достаточно задавать только один размер N(число строк=числу столбцов), например, N=3, а всего элементов в массиве 3х3 будет 9
Yandex
Объявления
14.10.2011, 15:15     Симметрия главной диагонали.
Ответ Создать тему
Опции темы

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