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

Идентичность двух матриц - C++

Восстановить пароль Регистрация
 
donvito111
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 48
14.01.2013, 19:09     Идентичность двух матриц #1
Здравствуйте, у меня задание написать 2 матрици. Я написал для матриц которые :возвращала true если элементы матрица образует семетрию по вертикали ,в противном случае false.
А теперь мне задание теже самые матрици передать так чтоб :возвращала true если элементы матрица абразует идентичность ,в противном случае false.


Я так понял что место symmetric надо писать is_identity
Я изменял но он тоже самое выводит

вот коды: Matrix.h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Matrix {
    int height;
    int width;
    int elems[10][10];
public :
    void init(int h_max, int w_max);
    void init_with_elems(int h_max, int w_max, const int data[], int data_size);
    void print();
    int get_height();
    int get_width();
    int get_elem(int h_pos, int w_pos);
    void set_elem(int h_pos, int w_pos, int new_value);
    bool symmetric();
    
};
Main.cpp

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
#include "Matrix.h"
#include <iostream>
#include <assert.h>
using namespace std;
void main() {
    
    Matrix m1;
    
    int dati[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    m1.init(5,5);
    m1.init_with_elems(5,5,dati,10);
    m1.set_elem(3,2,7);
    m1.set_elem(30,-2,7);
    m1.print();
 
cout << endl;
cout << endl;
 
cout <<"Высота " << m1.get_height() << endl;
cout <<"ширина " << m1.get_width() << endl; 
cout <<"новое значени " << m1.get_elem(3,2) << endl;
cout <<"новое значение " << m1.get_elem(-2,50) << endl;
 
if ( m1.symmetric() == false){
    cout <<"матрица не семетрична";   
}
else 
    cout <<"матрица семетрична";
 
assert(!m1.symmetric());
 
cout << endl;
 
Matrix m2;
    
    int dati2[] = {1, 2, 3, 4, 5, 6, 1, 2, 3};
    m2.init(3,3);
    m2.init_with_elems(3,3,dati2,10);
    m2.set_elem(2,2,3);
    m2.set_elem(30,-2,7);
    m2.print();
 
cout << endl;
cout << endl;
 
cout <<"высота " << m2.get_height() << endl;
cout <<"ширина " << m2.get_width() << endl; 
cout <<"новое значение " << m2.get_elem(2,2) << endl;
cout <<"новое значение " << m2.get_elem(-2,50) << endl;
 
if ( m2.symmetric() == false){
    cout <<"матрица не семетрична";   
}
else 
    cout <<"матрица семетрична";
 
assert(m2.symmetric());
 
getchar();
 
}
Matric.cpp

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
76
77
78
79
80
#include "Matrix.h"
#include <iostream>
#include <cstdlib> 
using namespace std;
 
void Matrix::init_with_elems(int h_max, int w_max, const int data[], int data_size) {
    height = (h_max > 10 || h_max <1) ? 10 : h_max; 
    width = (w_max >10 || w_max <1 ) ? 10 :  w_max;
 
    int i = 0;
 
    for (int r = 0; r < height; r++)
        for (int c = 0; c < width; c++)
            if (i < data_size) {
                elems[r][c] = data[i++];
            } 
            else
                elems[r][c] = 0;
}
 
void Matrix::init(int h_max, int w_max) {
    height = (h_max > 10 || h_max <1) ? 10 : h_max;
    width = (w_max >10 || w_max <1 ) ? 10 :  w_max;
 
    int i = 0;
    
    for (int r = 0; r < height; r++)
        for (int c = 0; c < width; c++)
            elems[r][c] = 0;
}
 
void Matrix::print() {
 
 
    for (int r = 0; r < height; r++){
        cout<< endl;
 
    
        for (int c = 0; c < width; c++)
    
 
        cout << elems[r][c] <<  " ";
 
    }
}
 
int Matrix::get_height() {
    return height;
}
    
int Matrix::get_width() {
    return width;
}
 
int Matrix::get_elem(int h_pos, int w_pos) {
if (h_pos <= height && h_pos >= 1 && w_pos <= width && w_pos >= 1)
    return elems[h_pos][w_pos];
else
    return 0;
}
 
void Matrix::set_elem(int h_pos, int w_pos, int new_value) {
if (h_pos <= height && h_pos >= 1 && w_pos <= width && w_pos >= 1) {
    elems[h_pos][w_pos] = new_value;
}
}
 
bool Matrix::symmetric () {
 
    int i = 0;
 
    for (int r = 0; r < height/2; r++)
        for (int c = 0; c < width; c++)
            if (elems[r][c] != elems[height-r-1][c]) {
                return false;
            } 
            
    return true;
 
}


помогите переделать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2013, 19:09     Идентичность двух матриц
Посмотрите здесь:

Сложение двух матриц C++
Написать функцию, вычисляющую произведение двух матриц C++
C++ Умножение двух матриц на С++
C++ Сложение двух матриц
Умножение двух матриц C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MikeSoft
Эксперт C++
 Аватар для MikeSoft
3782 / 1766 / 85
Регистрация: 21.11.2009
Сообщений: 2,540
14.01.2013, 19:22     Идентичность двух матриц #2
Цитата Сообщение от donvito111 Посмотреть сообщение
Я так понял что место symmetric надо писать is_identity
Я изменял но он тоже самое выводит
А саму функцию вы описать/изменить не хотите?
Измените symmetric, включив в циклы все элементы.
donvito111
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 48
14.01.2013, 19:30  [ТС]     Идентичность двух матриц #3
включив в циклы все элементы.
как это зделать . Я не знаю
donvito111
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 48
21.01.2013, 21:35  [ТС]     Идентичность двух матриц #4
Помогите пожалуйста я пока еще плоха в С++ Разбераюсь
Yandex
Объявления
21.01.2013, 21:35     Идентичность двух матриц
Ответ Создать тему
Опции темы

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