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

Наследование, нахождения произведения и сложения матриц - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ После каждого четного элемента массива вставить 2 элемента с тем же значением, полученный массив отсортировать http://www.cyberforum.ru/cpp-beginners/thread909369.html
после каждого четного элемента массива вставить 2 элемента с тем же значением.полученный масив отсортировать.очень хотелось бы с комментариями. пример вывода на экран исх массив 1 2 0 12 14 четные элементы 2 12 14 полученный отсортированный массив 14 14 14 12 12 12 2 2 2 1 0 вот этот код нужно исправить.в нем ошибка(...
C++ Описать класс «вектор». Перегрузить операции * (скалярное произведение, умножение на скаляр) Помогите пожалуйста описать класс «вектор». Перегрузить операции * (скалярное произведение, умножение на скаляр), =. Протестировать работоспособность каждого метода вашего класса. а то экз завтра а я не успела сделать её. http://www.cyberforum.ru/cpp-beginners/thread909368.html
Не могу понять, что за ошибка (В матрице поменять местами столбцы, чтобы минимальные элементы образовывали возрастающую последовательность) C++
Суть задачи состроит в том, дана матрица размера n на m. задается двумерный массив(рандомно). нужно поменять местами столбцы что бы минимальные элементы образовывали возрастающую последовательность. #include "stdafx.h" #include <stdio.h> #include <iostream> #include <time.h> #define x 100 #define y 100 using namespace std; void gen (int str, int slb, int a, int b, int mass);
C++ Как переделать код?. Нужно сделать через функции пользователя
#include <string.h> #include <iostream> #include <algorithm> using namespace std; int main() { char *st=new char;
C++ Отсортировать массив по возрастанию http://www.cyberforum.ru/cpp-beginners/thread909350.html
подскажите пожалуйста #include <iostream> #include <iomanip> #include <ctime> using namespace std; void main() { setlocale(LC_CTYPE, "Russian"); int *a,*b,*c,i,j,k,t,trunk,flag,flag1,N,M; cout<<"Введите размер массива А :";
C++ нужен ли while в рекурсии? Сказали переделать код, нужно что то сделать с while. Что не так объясните) #include <stdio.h> #include <conio.h> #include <locale.h> #include <math.h> double sum(int n, int x, int e) { double y = (2*n-1)*pow((double)x,2*n+1)/(2*n*(2*n+1)); подробнее

Показать сообщение отдельно
coPointer
0 / 0 / 0
Регистрация: 12.04.2013
Сообщений: 6
24.06.2013, 05:23     Наследование, нахождения произведения и сложения матриц
Организовать производный класс, дополнительно содержащий функции нахождения произведения и сложения матриц.
Программу написал, но почему-то значения во всех матрицах задаются одинаково?

class.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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <windows.h>
#include <cmath>
#include <ctime>
using namespace std;
class Matrix
{
    private:
        int **array;
        int size;
    public:
        void set_Matrix_element(int, int, int);
        int get_Matrix_size();
        int get_Matrix_element(int, int);
        void set_Matrix();
        float set_det();
        void show_Matrix(int);
        void show_TMatrix();
        Matrix::Matrix();
        Matrix::Matrix(int);
        ~Matrix(){cout<< "ГЊГ*òðèöГ* ГіГ*è÷òîæåГ*Г*"<<endl;};
};
void Matrix::set_Matrix_element(int i, int j, int el)
{
    array[i][j]=el; 
}
int Matrix::get_Matrix_size()
{
    return size;
}
int Matrix::get_Matrix_element(int i, int j)
{
    return array[i][j];
}
void Matrix::set_Matrix()
{
    srand((unsigned)time(NULL));
    array = new int*[size];
    for(int i=0; i<size; i++)
        array[i] = new int [size];
        for(int i=0; i<size; i++)
            for(int j=0; j<size; j++)
                array[i][j]=rand()%50;
}
float Matrix::set_det()
{
    int l;
    float sum11=1,sum12=0, sum21=1, sum22=0, det;
    for(int i=0; i<size; i++)
    {
        sum11=1; l=2*size-1-i; sum21=1;
        for(int j=0; j<size; j++)
        {
            sum21*=array[j][l%size];
            l--;
            sum11*=array[j][(j+i)%(size)];
        }
        sum22+=sum21;
        sum12+=sum11;
    }
    det=sum12-sum22;
    cout<<"Îïðåäåëèòåëü Г°Г*ГўГҐГ* "<<det<<endl;
}
void Matrix::show_Matrix(int k)
{
    switch(k)
    {
        case 0: cout<<"ÈñõîäГ*Г*Гї Г¬Г*òðèöГ*:"<<endl; break;
        case 1: cout<<"ÐåçóëüòГ*ГІ ñëîæåГ*ГЁГї Г¬Г*òðèö"<<endl; break;
        case 2: cout<<"ÐåçóëüòГ*ГІ ГіГ¬Г*îæåГ*ГЁГї Г¬Г*òðèö"<<endl; break;
    }
    for(int i=0; i<size; i++)
    {
        for(int j=0; j<size; j++)
            cout<<setw(7)<<array[i][j];
        cout<<endl;
    }
}
void Matrix::show_TMatrix()
{
    cout<<"Г’Г°Г*Г*Г±ГЇГ®Г*èðîâГ*Г*Г*Г*Гї Г¬Г*òðèöГ*:"<<endl;
    for(int j=0; j<size; j++)
    {
        for(int i=0; i<size; i++)
        cout<<setw(7)<<array[i][j];
    cout<<endl;
    }            
}
Matrix::Matrix()
{
    size=3;
    set_Matrix();
    cout<<"Èñïîëüçóåòñÿ ГЄГ®Г*ñòðóêòîð ГЇГ® óìîë÷Г*Г*ГЁГѕ! ГђГ*çìåð Г¬Г*òðèöû ГЇГ® óìîë÷Г*ГЁГѕ Г°Г*ГўГҐГ* 3"<<endl;
}
Matrix::Matrix(int a)
{
    size=a;
    set_Matrix();
    cout<<"Èñïîëüçóåòñÿ ГЄГ®Г*ñòðóêòîð Г± ГЇГ*Г°Г*ìåòðГ*ìè! ГђГ*çìåð Г¬Г*òðèöû Г°Г*ГўГҐГ* "<<size<<endl;
}
 
class Matrix2 : public Matrix
{
    public:
        Matrix2(int a) : Matrix(a){};
        Matrix2() : Matrix(){};
        ~Matrix2(){};
        void add(Matrix* A, Matrix* B) 
        {
            int sz_A=A->get_Matrix_size();
            if(sz_A==B->get_Matrix_size()&&this->get_Matrix_size()==sz_A)
            {
                int i,j;
                for(i=0; i<sz_A; i++)
                    for(j=0; j<sz_A; j++)
                        set_Matrix_element(i, j, A->get_Matrix_element(i,j)+B->get_Matrix_element(i,j));
                this->show_Matrix(1);
            }
            else cout<<"ÍåâîçìîæГ*Г® ñëîæèòü Г¬Г*òðèöû"<<endl;
        };
        void mul(Matrix* A, Matrix* B) 
        {
            int sz_A=A->get_Matrix_size();
            if(sz_A==B->get_Matrix_size()&&this->get_Matrix_size()==sz_A)
            {
                int i,j, k,l;
                int p;
                for(i=0; i<sz_A; i++)
                    for(j=0; j<sz_A; j++)
                    {
                        for(p=0, k=0; k<sz_A; k++)
                        {
                            p+=A->get_Matrix_element(i,k)*B->get_Matrix_element(k, j);
                        }
                    set_Matrix_element(i, j, p);
                    }
                this->show_Matrix(2);
            }
            else cout<<"ÍåâîçìîæГ*Г® ïåðåìГ*îæèòü Г¬Г*òðèöû"<<endl;
        }
};
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
#include "class.cpp"
int main()
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    Matrix A(3);
    A.show_Matrix(0);
    A.show_TMatrix();
    A.set_det();
    cout<<endl;
    Matrix T;
    T.show_Matrix(0);
    T.show_TMatrix();
    T.set_det();
    cout<<endl;
    Matrix2 D(4);
    D.show_Matrix(0);
    D.show_TMatrix();
    D.set_det();
    D.add(&A, &T);
    D.mul(&A, &T);
    system("pause");
    return (0);
}
Добавлено через 8 часов 0 минут
up!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru