64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841
1

Конструктор

07.12.2011, 21:52. Показов 1535. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток. Пишу программу, которая вычисляет ранг матрицы и выводит транспонированную. Вот код:
matr.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class matr
{
public: 
matr(int, int);
//matr();
~matr();
void out() const;
void trans();
float det();
private:
int n;
int m;
float x[50][50];
};
matr.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
#include <iostream.h>
#include "matr.h"
 
//void matr::matr()
//{
//n=2;
//m=2;
//int i,j;
//for(i=0;i<n;i++)
//for(j=0;j<m;j++)
//{
//x[i][j]=0;
//}
//}
 
//----------------------------
void matr::matr(int k, int l)
{
n=k; m=l;
int i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
x[i][j]=rand()%10;
}
}
//--------------------
void matr::out()const
{
int i,j; 
for(i=0;i<n;i++)
cout<<endl;
for(j=0;j<m;j++)
{
cout<<x[i][j]<<" ";
}
}
//------------------------------
void matr::trans()
{
if(m==n)
{ 
int i,j,a[50][50];
for(i=0;i<n;i++)
for(j=0;j<m;j++)
a[j][i]=x[i][j];
for(i=0;i<n;i++)
cout<<endl;
for(j=0;j<m;j++)
{
cout<<a[i][j]<<" ";
}}
else cout<<"No trans!!!";
}
 
//--------------------------------
float matr::det()
{
float det=0;
if((m==3)&&(n==3))
{
det=x[1][1]*x[2][2]*x[3][3]+x[1][2]*x[2][3]*x[3][1]+x[1][3]*x[2][1]*x[3][2]-x[1][3]*x[2][2]*x[3][1]-x[1][2]*x[2][1]*x[3][3]-x[1][1]*x[2][3]*x[3][2];
return det;
}
}
ispoln.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
#include <iostream.h>
#include <string.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include "matr.cpp"
int main()
{
matr m1,m2;
int i,j,b,c;
float det;
//m1.matr();
m1.out();
cin>>b>>c;
//m2.matr(b,c);
cout<<"Matrix"<<endl<<endl;
m2.out();
cout<<endl<<endl<<"Trans Matrix"<<endl<<endl;
m2.trans();
m2.det();
if (det==0)
cout<<"No Det!!! Your Matrix - invalid";
else
cout<<endl<<endl<<"Det="<<det;
}
Ругается на ошибки в файле "matr.cpp" посмотрите код, подскажите, как его довести до работоспособного состояния.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2011, 21:52
Ответы с готовыми решениями:

Не могу сделать чтобы класс содержал основной конструктор и конструктор копирования
Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных...

Конструктор класса, конструктор копирования запускается не тот который нужен
Есть такой конструктор: Neuron::Neuron(int iType_activation_funk) { this-&gt;iType_act =...

this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор)
class Test { int i; public: void test(int i) { this -&gt; i = i; } }; Конструктор...

Будет ли определен компилятором конструктор по умолчанию, если есть конструктор с дефолтным параметром?
Добрый день, сразу к делу, есть некий класс class some { int x; public: some(int y = 1)...

22
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841
08.12.2011, 01:35  [ТС] 21
Author24 — интернет-сервис помощи студентам
Да в основном сейчас разбираем ошибки из matr.cpp, а если учесть и ispoln.cpp то у меня всё вместе получается 6 ошибок, вот всё кроме предупреждений что пишет компилятор:
note C:\...\Matr\matr.h:2 matr::matr(int, int)
note C:\...\Matr\matr.h:2 candidates are: matr::matr(const matr&)
9 C:\...\isz.cpp no matching function for call to `matr::matr()'
note C:\...\Matr\matr.h:2 matr::matr(int, int)
note C:..\Matr\matr.h:2 candidates are: matr::matr(const matr&)
9 C:\...Matr\isz.cpp no matching function for call to `matr::matr()'
C:\...Matr\isz.cpp In function `int main()':
C:\...\matr.cpp In member function `void matr::trans()':
4 C:\...\Matr\matr.h matr::matr(int, int)
error C:\...\matr.h:2 candidates are: matr::matr(const matr&)
5 C:\...\matr.cpp prototype for `matr::matr()' does not match any in class `matr'
6 C:\...\isz.cpp In file included from C:\Users\DrSMERTb\Desktop\Matr\isz.cpp
1 C:\...\isz.cpp from C:\Users\DrSMERTb\Desktop\Matr\isz.cpp

Добавлено через 3 минуты
Извините, но сильно спать хочется у меня уже пол 8-го утра, напишите что вы думаете по поводу этих ошибок, я потом прочту и попробую прислушиваясь в вашим советам, исправить их...
0
Заблокирован
08.12.2011, 01:44 22
C++
1
2
3
4
#include <math.h>
#include "matr.cpp"  //это ты так единицы трансляции
                              // к своему проекту цепляешь?
                        //считаешь это правильным?
0
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841
08.12.2011, 08:51  [ТС] 23
Вот что получил:
ispoln.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
#include <iostream.h>
#include <string.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include "matr.cpp"
int main()
{
matr m1,m2;
int i,j,b,c;
float det;
//m1.matr();
cout<<"Vvedite razmernost matr= ";
m1.out();
cin>>b>>c;
//m2.matr(3,3);
cout<<"Matrix"<<endl;
m2.out();
cout<<"Trans Matrix"<<endl;
m2.trans();
m2.det();
//if (det==0)
//cout<<"No Det!!! Your Matrix - invalid";
//else
cout<<endl<<endl<<"Det="<<det;
matr();//âûçîâ äåñòðóêòîðà
_getch();
}
Тут в 16 строке поидее не следует закоменчивать, но тогда пишит что "ошибочное использование функции". Но в таком случае как у меня на данный момент он использует класс по умолчанию.
matr.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
#include <iostream.h>
#include "matr.h"
 
 
 
//----------------------------
matr::matr(int k, int l)
{
n=k; m=l;
int i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
x[i][j]=rand()%10;
}
}
//--------------------
matr::matr()
{
n=2;
m=2;
int i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
x[i][j]=rand()%10;
}
}
//äåñòðóêòîð
  matr::~matr() 
  {
  cout<<"DESTRUCTOR"<<endl;
  } 
//--------------------
void matr::out()const
{
int i,j; 
for(i=0;i<n;i++)
{
cout<<endl;
for(j=0;j<m;j++)
{
cout<<x[i][j]<<" ";
}
}
}
//------------------------------
void matr::trans()
{
int i,j,a[3][3]={0,0,0,0,0,0,0,0,0};
if(m==n)
{
for(i=0;i<n;i++)
{
cout<<endl;
for(j=0;j<m;j++)
a[j][i]=x[i][j];
for(i=0;i<n;i++)
cout<<endl;
for(j=0;j<m;j++)
{
cout<<a[i][j]<<" ";
}
}
}
else cout<<"No trans!!!";
}
 
//--------------------------------
float matr::det()
{
float det=0;
if((m==3)&&(n==3))
{
det=x[1][1]*x[2][2]*x[3][3]+x[1][2]*x[2][3]*x[3][1]+x[1][3]*x[2][1]*x[3][2]-x[1][3]*x[2][2]*x[3][1]-x[1][2]*x[2][1]*x[3][3]-x[1][1]*x[2][3]*x[3][2];
return det;
}
else if((m==2)&&(n==2))
det=1000;
return det;
}
matr.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class matr
{
public: 
matr();
matr(int, int);
~matr();
void out() const;
void trans();
float det();
private:
int n;
int m;
float x[50][50];
};
0
08.12.2011, 08:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2011, 08:51
Помогаю со студенческими работами здесь

Не могу правильно сделать конструктор и конструктор копирования и принадлежность точки с заданными координатами треугольнику
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;windows.h&gt; #include...

Создать класс. Написать конструктор по умолчанию, конструктор с параметрами. Перегрузить операции «меньше» и «равно»
Помогите пожалуйста, хоть с одним из заданий. 1. Создать класс. Написать конструктор по...

Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно?
Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно?

Конструктор производного класса требует конструктор предка
Выдаёт вот такую вот ошибку: no matching function for call to 'Cube::Cube()' class Cube {...


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

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

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