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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Составить файл, содержащий инвертированные строки заданного файла http://www.cyberforum.ru/cpp-beginners/thread761634.html
Задача: Составить файл, содержащий инвертированные строки заданного файла. План действий: 1) Открыть файл для чтения + 2) Считать первую строку из файла - 3) определить длину считываемой строки + 4) Составить цикл, в котором будет инвертироваться строка + 5) проделать с каждой строкой файла ...
C++ Объясните, для чего нужны некоторые строчки в коде(using namespace, new, int main) #include <iostream> using namespace std; //для чего эта строчка int main(void) // что нужно изменить чтобы было void main() { unsigned count; unsigned result(1); unsigned number_m; bool contains = false; cout<<"Count of numbers : "; cin>>count; http://www.cyberforum.ru/cpp-beginners/thread761608.html
C++ Код, написанный на Borland C++ не работает в Dev C++
программа на Си++ пользуюсь DEV-CPP Не могу разобраться почему не работает программа. Если у кого есть время помогите пожалуйста. задание: нарисовать змею ползущую в горку . вот код
C++ Рассчитать время выполнения алгоритма
рассчитать время выполнения алгоритма со сложностью О (n^2) для n=10000 если время выполнения для n=1000 равно 0,1 мсек помогите пожалуйста с ответом, у меня получилась 1 мсек, но я не уверена
C++ Почему в функцию можно передавать аргументы с амперсандом или без него и результат тот же самый? http://www.cyberforum.ru/cpp-beginners/thread761577.html
К примеру : int main() { int x=3, y=4; swap(&x,&y); return 0; } void swap(int* a, int* b){ int tmp = *a; *a = *b;
C++ Сортировка различного типа чисел программа сортирует числа одного типа, а как можно сделать так, чтобы сортировались разные типы чисел? #include <iostream> using namespace std; const int n=5; template<class T> void sort(T a) { T buffer; for (int i=0;i<n;i++) подробнее

Показать сообщение отдельно
donvito111
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 48
14.01.2013, 19:09     Идентичность двух матриц
Здравствуйте, у меня задание написать 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;
 
}


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