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

Конструктор - C++

Восстановить пароль Регистрация
 
 
DrSMERTb
 Аватар для DrSMERTb
59 / 35 / 4
Регистрация: 12.11.2010
Сообщений: 808
07.12.2011, 21:52     Конструктор #1
Всем доброго времени суток. Пишу программу, которая вычисляет ранг матрицы и выводит транспонированную. Вот код:
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" посмотрите код, подскажите, как его довести до работоспособного состояния.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2011, 21:52     Конструктор
Посмотрите здесь:

this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор) C++
C++ Не могу сделать чтобы класс содержал основной конструктор и конструктор копирования
C++ Не могу правильно сделать конструктор и конструктор копирования и принадлежность точки с заданными координатами треугольнику
Конструктор инициализации, конструктор копирования, деструктор C++
C++ Конструктор производного класса требует конструктор предка
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrSMERTb
 Аватар для DrSMERTb
59 / 35 / 4
Регистрация: 12.11.2010
Сообщений: 808
08.12.2011, 01:35  [ТС]     Конструктор #21
Да в основном сейчас разбираем ошибки из 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-го утра, напишите что вы думаете по поводу этих ошибок, я потом прочту и попробую прислушиваясь в вашим советам, исправить их...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bers
Заблокирован
08.12.2011, 01:44     Конструктор #22
C++
1
2
3
4
#include <math.h>
#include "matr.cpp"  //это ты так единицы трансляции
                              // к своему проекту цепляешь?
                        //считаешь это правильным?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2011, 08:51     Конструктор
Еще ссылки по теме:

Конструктор класса не видит конструктор по умолчанию другого класса C++
C++ Создать класс. Написать конструктор по умолчанию, конструктор с параметрами. Перегрузить операции «меньше» и «равно»
C++ Будет ли определен компилятором конструктор по умолчанию, если есть конструктор с дефолтным параметром?

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

Или воспользуйтесь поиском по форуму:
DrSMERTb
 Аватар для DrSMERTb
59 / 35 / 4
Регистрация: 12.11.2010
Сообщений: 808
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];
};
Yandex
Объявления
08.12.2011, 08:51     Конструктор
Ответ Создать тему
Опции темы

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