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

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

Войти
Регистрация
Восстановить пароль
 
pepsi-_-cola
0 / 0 / 0
Регистрация: 30.10.2011
Сообщений: 13
#1

Является ли матрица симметричной относительно главной диагонали (templates) - C++

01.05.2012, 15:47. Просмотров 769. Ответов 5
Метки нет (Все метки)

С помощью функции шаблона выяснить, является ли матрица симметричной относительно главной диагонали
Вот мой код
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
#include "stdafx.h"
#include "iostream"
#include "conio.h"
 
using namespace std;
 
 
template <typename X>
 X **creat(int n)
{
    X **mas=new X*[n];
    for(int i=0;i<n;i++) mas[i]=new X [n];
 
    for(int i=0;i<n,i++)
        for(int j=0;j<n;j++)
            cin>>mas[i][j];
    return mas;
}
 
template <typename X>
bool func(X **a, int n)
{
    int count=0;
    
 
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
        {
            if (a[i][j]==a[j][i]) count++;
        }
        if (count==2*n) return true;
        else return false;
    
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int k=3;
    int **a=creat(k);
    float **b;
    bool q;
    q=func(a,3);
    cout<<q<<"\n";
    q=func(b,3);
    cout<<q<<"\n";
    getch();
    return 0;
}
почему он мне выводит ошибку, где int **a=creat(k) ???
и сам код верный вообще?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2012, 15:47     Является ли матрица симметричной относительно главной диагонали (templates)
Посмотрите здесь:

Определить, является ли матрица симметричной (относительно главной диагонали) - C++
Задана действительная матрица порядка n *m Определить, является ли матрица симметричной (относительно главной диагонали). помогите,...

Определить является ли матрица симметричной относительно главной диагонали - C++
Найдите ошибку пожалуйста.Определить является ли квадратная матрица A симметричной относительно главной диагонали. Матрица вводится с...

Проверить, является ли заданная матрица симметричной относительно главной диагонали - C++
Помогите , пожалуйста, написать программу на С++. Дана квадратная вещественная матрица размерности n. Является ли матрица симметричной...

Проверить, является ли матрица симметричной относительно своей главной диагонали - C++
Дан двумерный массив размера N×N, заполненный целыми числами. Требуется определить, является ли он симметричным относительно своей главной...

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

Определить, является ли заданная матрица симметричной относительно главной диагонали - C++
помогите плизз написать код прог. №1 Определить, я является ли заданная квадратная матрица Н-го порядка симметричной относительно гл....

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
02.05.2012, 11:48     Является ли матрица симметричной относительно главной диагонали (templates) #2
Цитата Сообщение от pepsi-_-cola Посмотреть сообщение
почему он мне выводит ошибку, где int **a=creat(k) ???
Потому, что нельзя вывести тип на основании возвращаемого значения. Пиши так:
C++
1
int **a=creat<int>(k);
В строке 14 синтаксическая ошибка. Стоит запятая вместо точки с запятой.

Добавлено через 7 минут
Цитата Сообщение от pepsi-_-cola Посмотреть сообщение
C++
1
2
if (count==2*n) return true;
else return false;
Почему это должно получиться 2*n? В случае симметричной матрицы получится n. Больше, чем есть итераций (элементов матрицы) насчитать не удастся.
pepsi-_-cola
0 / 0 / 0
Регистрация: 30.10.2011
Сообщений: 13
18.05.2012, 14:28  [ТС]     Является ли матрица симметричной относительно главной диагонали (templates) #3
Добавлено через 7 минут

Почему это должно получиться 2*n? В случае симметричной матрицы получится n. Больше, чем есть итераций (элементов матрицы) насчитать не удастся.[/QUOTE]

потому что будет двойной проход по матрице
сначала будут сравниваться элементы [k][l] с [l][k], а потом будет [l][k] с [k][l]
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
18.05.2012, 14:38     Является ли матрица симметричной относительно главной диагонали (templates) #4
Цитата Сообщение от pepsi-_-cola Посмотреть сообщение
потому что будет двойной проход по матрице
сначала будут сравниваться элементы [k][l] с [l][k], а потом будет [l][k] с [k][l]
Звучит вроде убедительно, но, тем не менее, это не верно.
Выбирается элемент слева от знака сравнения, а элемент справа от сравнения просто проверяется на соответствие ему. В цикле n*n будет выбрано n*n пар элементов для сравнения, сравнение будет произведено n*n раз и, поскольку матрица симметричная, то n*n раз будет увеличен счётчик. Удвоению взяться неоткуда.
-=ЮрА=-
Заблокирован
Автор FAQ
18.05.2012, 14:57     Является ли матрица симметричной относительно главной диагонали (templates) #5
pepsi-_-cola, вот твоя задача
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
#include <iostream>
using namespace std;
 
template <class X> X **creat(int n, X**mas);
template <class X> void show(int n, X**mas);
template <class X> bool func(int n, X**a);
 
int main()
{
    int n = 0;
    int **a = NULL;
    cout<<"Enter n : ";cin>>n;
    
    a = creat(n,a);
    show (n,a);
    if(!func(n,a))
        cout<<"Matrix not symetric\n";
    else
        cout<<"Matrix is symetric\n";
    system("pause");
    return 0;
}
 
template <class X> X **creat(int n, X**mas)
{
    int i,j;
    mas = new X*[n];
    for(i = 0; i < n; i++) 
    {
        mas[i] = new X[n];
        for(j = 0; j < n; j++)
        {
            cout<<"X["<<i + 1<<"]["<<j + 1<<"] = ";
            cin>>mas[i][j];
        }
    }
    return mas;
}
 
template <class X> void show(int n, X**mas)
{
    int i, j;
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < n; j++)
            cout<<mas[i][j]<<" ";
        cout<<endl;
    }
    cout<<endl;
}
 
template <class X> bool func(int n, X**a)
{
    int i, j;
    bool bSym = true;
    for(i = 0; i < n/2 && bSym; i++)
    for(j = 0; j < n/2 && bSym; j++)
    {
        if(a[i][j] != a[j][i])
             bSym = false;
    }
    return bSym;
}
Миниатюры
Является ли матрица симметричной относительно главной диагонали (templates)  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2012, 15:00     Является ли матрица симметричной относительно главной диагонали (templates)
Еще ссылки по теме:

Определить, является ли заданная квадратная матрица симметричной относительно главной диагонали. - C++
Не могу решить задачу на С++ Вот условия: Определить, является ли заданная квадратная матрица симметричной относительно главной...

Определить, является ли заданная квадратная матрица симметричной относительно главной диагонали - C++
Задание: Определить, является ли заданная квадратная матрица А(5,5) симметричной относительно главной диагонали. Написать два варианта...

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

Определил, является ли заданная квадратная матрица симметричной относительно главной диагонали! - C++
Определить, является ли заданная квадратная матрица симметричной относительно главной диагонали! #include &lt;iostream&gt; #define MAX 100 ...

Определить является ли заданная квадратная матрица симметричной относительно главной диагонали - C++
Разработать алгоритм и программу. Определить является ли заданная квадратная матрица A n-го порядка (2&lt;=n&lt;=10 – вводится пользователем)...

Определить, является ли целая квадратная матрица порядка n симметричной (относительно главной диагонали) - C++
Помогите пожалуйста. В строке if(array1 == array1) выдаёт ошибку идентификатор i (и j) не определен. Почему так происходит? #include...


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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
18.05.2012, 15:00     Является ли матрица симметричной относительно главной диагонали (templates) #6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
for(i = 0; i < n/2 && bSym; i++)
* * for(j = 0; j < n/2 && bSym; j++)
* * {
* * * * if(a[i][j] != a[j][i])
* * * * * * *bSym = false;
* * }
- вот проверка симетричности.
Во-первых пробираем лишь половину элементов (вторая половина у нас справа в сравнении), будет до n 2 раза проведём проверку.
Во-вторых проще всего ввести флаг говорящий о том что попалось несиметричное значение
Yandex
Объявления
18.05.2012, 15:00     Является ли матрица симметричной относительно главной диагонали (templates)
Ответ Создать тему
Опции темы

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