Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
C1keu
1 / 1 / 0
Регистрация: 19.02.2010
Сообщений: 32
#1

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

09.10.2011, 14:21. Просмотров 1018. Ответов 7
Метки нет (Все метки)

Ребят,вобщем у меня есть задача: Дана матрица A(6,6)Определить являеться ли она симметричной относительной глвной диагонали.Если да то все эл.диагонали заменить нулями.

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

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

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

все нулевые элементы размещены ниже главной диагонали на нечетных строках и выше главной диагонали - на четных - C++
все нулевые элементы размещены ниже главной диагонали на нечетных строках и выше главной диагонали - на четных

Вывести на экран значения тех эле-ментов, лежащих выше главной диагонали, которые больше всех элементов, лежащих ниже главной диагонали - C++
А кто-нибудь может помочь еще с этим: Дан вещественный массив А. Вывести на экран значения тех эле-ментов, лежащих выше главной...

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

Определить: сумма элементов выше главной диагонали меньше суммы элементов ниже главной диагонали? - C++
Дана квадратная матрица натуральных чисел,( получаемая через rand()) .Определить, верно ли утверждение: сумма эллементов выше главной...

Умножьте все элементы матрицы на максимум главной диагонали. Вывести максимум главной диагонали - C++
Умножьте все элементы матрицы на максимум главной диагонали. Вывести максимум главной диагонали.

Отсортировать диагонали матрицы,расположенные выше главной, по убыванию элементов, а диагонали матрицы, расположенные ниже главной, по возрастанию - C++
дана матрица размерностью nxn, содержащая целые числа. Отсортировать диагонали матрицы,расположенные выше главной, по убыванию элементов, а...

7
aeshes
442 / 205 / 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*/
1
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
0
aeshes
442 / 205 / 13
Регистрация: 07.10.2011
Сообщений: 462
13.10.2011, 15:29 #4
по-моему в сканфе амперсанд пропустил
scanf("%f",&A[i][j]);
0
C1keu
1 / 1 / 0
Регистрация: 19.02.2010
Сообщений: 32
13.10.2011, 17:13  [ТС] #5
Был он там,я просто уже без него попробовал и забыл добавить обратно)
0
aeshes
442 / 205 / 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");
    }
}
1
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);
0
aeshes
442 / 205 / 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
1
14.10.2011, 15:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2011, 15:15
Привет! Вот еще темы с ответами:

Элементы, расположеные на главной диагонали, в первых 3 строках выше диагонали и в последних 2 строках ниже диагонали переместить в одномерный массив - C++
Нужно элементы расположены на главной диагонали, в первых 3 строках выше диагонали и в последних 2 строках ниже диагонали переместить в...

Вычислить сумму элементов матрицы над главной диагональю под главной диагональю и на главной диагонали - C++
Даны матрицы А(4,3) и В(3,5). Для каждой матрицы вычислить сумму элементов над главной диагональю под главной диагональю и на главной...

Обменять элементы массива на главной диагонали с элементами на побочной диагонали - C++
Всем привет. Дан двумерный массив размерностью 5х5, заполненный случайными числами из диапазона от 0 до 100. Обменять местами...

Найти сумму каждой диагонали матрицы выше главной диагонали - C++
Дана матрица n*m, найти сумму каждой диагонали отдельно, выше главной диагонали. Не могу понять задачу помогите пожалуйста.


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru