0 / 0 / 0
Регистрация: 24.11.2018
Сообщений: 13
1

Наследственность классов в С++

24.11.2018, 14:11. Показов 644. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Программа для решения уравнений методом Крамера. Проблема в том, что наследственный класс некорректно берет матрицу из базового класса. Если вводить матрицу в наследственном классе, все работает правильно.
Вот код:
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
#include <iostream>
using namespace std;
class Matrix
{
public:
    int M[3][3];
    int j, i;
    void SetMatrix()
    {
        cout << "Enter matrix: " << endl;
        for (i = 0; i < 3; i++)
        {
            for (j = 0; j < 3; j++)
            {
                cin >> M[i][j];
            }
        }
    }
    void GetMatrix()
    {
        cout << "Matrix: " << endl;
        for (i = 0; i < 3; i++)
        {
            for (j = 0; j < 3; j++)
            {
                cout << M[i][j] << " ";
            }
            cout << endl;
        }
    }
};
class System : public Matrix
{
public:
    int B[3];
    int Kramer()
    {
        cout << "Enter B: " << endl;
        for (i = 0; i < 3; i++)
        {
            cin >> B[i];
        }
        int det = determinant(M);
        int detx1 = determinantX1(M, B);
        int detx2 = determinantX2(M, B);
        int detx3 = determinantX3(M, B);
        if (det != 0)
        {
            cout << "X1 = " << (float)detx1 / (float)det << endl;
            cout << "X2 = " << (float)detx2 / (float)det << endl;
            cout << "X3 = " << (float)detx3 / (float)det << endl;
        }
        else
            cout << "The system has no solutions " << endl;
        return 0;
    }
 
    int determinant(int M[3][3])
    {
        int a11 = M[0][0];
        int a12 = M[0][1];
        int a13 = M[0][2];
        int a21 = M[1][0];
        int a22 = M[1][1];
        int a23 = M[1][2];
        int a31 = M[2][0];
        int a32 = M[2][1];
        int a33 = M[2][2];
 
        return (a11 * a22 * a33) + (a12 * a23 * a31) + (a13 * a21 * a32) -
            (a13 * a22 * a31) - (a11 * a23 * a32) - (a12 * a21 * a33);
    }
 
    int determinantX1(int M[3][3], int B[3])
    {
        int a12 = M[0][1];
        int a13 = M[0][2];
        int a22 = M[1][1];
        int a23 = M[1][2];
        int a32 = M[2][1];
        int a33 = M[2][2];
        int c1 = B[0];
        int c2 = B[1];
        int c3 = B[2];
 
        return (c1 * a22 * a33) + (a12 * a23 * c3) + (a13 * c2 * a32) -
            (a13 * a22 * c3) - (c1 * a23 * a32) - (a12 * c2 * a33);
    }
 
    int determinantX2(int M[3][3], int B[3])
    {
        int a11 = M[0][0];
        int a13 = M[0][2];
        int a21 = M[1][0];
        int a23 = M[1][2];
        int a31 = M[2][0];
        int a33 = M[2][2];
        int c1 = B[0];
        int c2 = B[1];
        int c3 = B[2];
 
        return (a11 * c2 * a33) + (c1 * a23 * a31) + (a13 * a21 * c3) -
            (a13 * c2 * a31) - (a11 * a23 * c3) - (c1 * a21 * a33);
    }
 
    int determinantX3(int M[3][3], int B[3])
    {
        int a11 = M[0][0];
        int a12 = M[0][1];
        int a21 = M[1][0];
        int a22 = M[1][1];
        int a31 = M[2][0];
        int a32 = M[2][1];
        int c1 = B[0];
        int c2 = B[1];
        int c3 = B[2];
 
        return (a11 * a22 * c3) + (a12 * c2 * a31) + (c1 * a21 * a32) -
            (c1 * a22 * a31) - (a11 * c2 * a32) - (a12 * a21 * c3);
    }
};
int main()
{
    Matrix Obj;
    System Obj1;
    Obj.SetMatrix();
    Obj.GetMatrix();
    Obj1.Kramer();
    system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.11.2018, 14:11
Ответы с готовыми решениями:

Классы и наследственность
Подскажите, пожалуйста, что представляет собой конструкция...

Учеба. Наследственность или усердие?
Именно о школе, о результатах. Как считаете, усердием можно много добиться, не обладая талантом?...

Запрет на наследственность фильтров в CSS - как?
Есть желание на сайте использовать такой эффект - когда пользователь открывает меню сайта - хочу...

Разработать систему классов по заданной теме. Обеспечить соответствующую функциональность классов
Блин, люди, помоги с задачей :( А то зачет не поставят :( Разработать систему классов по...

0
24.11.2018, 14:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.11.2018, 14:11
Помогаю со студенческими работами здесь

Массив разных классов. Как добратся до всех полей этих классов?
Все классы имеют общего предка. Экземпляры этих классов запихнуты в один массив нужно както...

На основе указанных классов создать набор классов с использованием множественного наследования
Создать базовый класс «Транспорт» и производные от него классы «Автомобиль», «Поезд», «Самолет»....

Разработать иерархию классов, демонстрирующее работу с коллекцией объектов разных классов
Задание: Разработать в соответствии с индивидуальным заданием иерархию классов и приложение,...

Автоматическая генерация классов С ++ с UML диаграмм классов. Наследование в с++. Абстрактные классы. WhiteStarUML
Создать классовую модель(желательно в WhiteStarUML), которая включает в себя абстрактный класс...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru