0 / 0 / 0
Регистрация: 16.10.2011
Сообщений: 14
|
|
1
|
не могу найти ошибку , тема классы в С++
16.11.2011, 00:27. Показов 474. Ответов 0
вот код задания
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<math.h>
class Prism_Inscribed_Rectilineal_Triangl{
double r,a,h;
public:
void set_Init(double r,double a,double h);
void print();
void skan();
double get_So();
double get_Sb();
double get_Sp();
};
void skan(Prism_Inscribed_Rectilineal_Triangl *t);
int main(){
Prism_Inscribed_Rectilineal_Triangl my_pr;
Prism_Inscribed_Rectilineal_Triangl *my_pr1 =new Prism_Inscribed_Rectilineal_Triangl ;
cout<<"1 \n";
skan(&my_pr);
my_pr.print();
cout<<"2\n";
skan(my_pr1);
my_pr1->print();
delete my_pr1;
system ("pause");
return 0;
}
void Prism_Inscribed_Rectilineal_Triangl::set_Init (double rr,double aa,double hh){
r=rr; a=aa; h=hh;
}
void Prism_Inscribed_Rectilineal_Triangl::print(){
cout<<"r="<<r<<" "<<"a="<<a<<" "<<"h="<<h<<endl;
cout<<"So="<<get_So()<<" Sb="<<get_Sb()<<" Sp="<<get_Sp()<<endl;
}
double Prism_Inscribed_Rectilineal_Triangl:: get_So(){
return a*a*sqrt(3/4.0); }
double Prism_Inscribed_Rectilineal_Triangl:: get_Sb() {
return 3*a*h;
}
double Prism_Inscribed_Rectilineal_Triangl:: get_Sp() {
return 2* get_So()+ get_Sb();
}
void skan(Prism_Inscribed_Rectilineal_Triangl *t){
double r,a,h;
cout<<" r=";
cin>>r;
cout<<" "<<"a=";
cin>>a;
cout<<" "<<"h=";
cin>>h;
t->set_Init(r,a,h);
} |
|
нужно изменить программу так чтобы инициализация объекта производилась с помощью конструктора с параметрами.Ввести еще одну закрытую переменную класса для хранения имени объекта. Выделение памяти для имени объекта (посредством оператора new) и его инициализацию провести в конструкторе, освобождение выделенной памяти (посредством оператора delete)- в деструкторе.Создать несколько объектов разработанного класса , вывести занчения площадей их оснований, боковой и полной поверхностей. Вот что я написала....
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
| #include <math.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
class Prism_Inscribed_Rectilineal_Triangl
{
protected:
char* fName;
double fR;
double fH;
double fA;
public:
Prism_Inscribed_Rectilineal_Triangl ( char* Name,double R, double H,double A);
~ Prism_Inscribed_Rectilineal_Triangl()
double get_So();
double get_Sb();
double get_Sp();
void set_Init (char* Name,double R, double H,double A);
void print ();
};
Prism_Inscribed_Rectilineal_Triangl::Prism_Inscribed_Rectilineal_Triangl(char *Name,double R,double H,double A)
{
strcpy ( Prism_Inscribed_Rectilineal_Triangl::R,R);
strcpy ( Prism_Inscribed_Rectilineal_Triangl::H,H);
strcpy ( Prism_Inscribed_Rectilineal_Triangl::A,A);
Prism_Inscribed_Rectilineal_Triangl:: Name=Name;
}
Prism_Inscribed_Rectilineal_Triangl::~Prism_Inscribed_Rectilineal_Triangl()
{
delete[] this->fName;
}
{
cout<<" Destruction of the object!"<< endl;
}
void Prism_Inscribed_Rectilineal_Triangl ::set_Init (char* Name, double R, double H,double A)
{
delete[] this->fName;
this->fName = new char[strlen(Name)];
strcpy(this->fName, Name);
this->fR = R;
this->fH = H;
this->fA = A;
}
void Prism_Inscribed_Rectilineal_Triangl::Print ()
{
cout<<"R="<<R<<" "<<"A="<<A<<" "<<"H="<<H<<endl;
cout<<" So="<<get_So()<<" Sb="<<get_Sb()<<" Sp="<<get_Sp()<<endl;
}
double Prism_Inscribed_Rectilineal_Triangl:: get_So(){
return A*A*sqrt(3/4.0); }
double Prism_Inscribed_Rectilineal_Triangl:: get_Sb() {
return 3*A*H;
}
double Prism_Inscribed_Rectilineal_Triangl:: get_Sp() {
return 2* get_So()+ get_Sb();
}
int main ()
{
Prism_Inscribed_Rectilineal_Triangl *a = new Prism_Inscribed_Rectilineal_Triangl(13, "F= ", 7.0);
Prism_Inscribed_Rectilineal_Triangl *b = new Prism_Inscribed_Rectilineal_Triangl(13, "F= ", 1.0);
a->Print();
b->Print();
delete a;
delete b;
getch();
return 0;
} |
|
|
Комментарий модератора |
|
код выделяем тегами |
|
0
|