|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.11.2011, 00:30 | #1 |
Пользователь
Регистрация: 16.10.2011
Сообщений: 14
|
не могу найти ошибки, тема классы в С++
вот код задания
#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_Tr iangl *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 :rint(){ 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_Tr iangl *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)- в деструкторе.Создать несколько объектов разработанного класса , вывести занчения площадей их оснований, боковой и полной поверхностей. Вот что я написала.... #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_Trian gl(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_Tria ngl() { 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; } |
16.11.2011, 02:44 | #2 | ||||||||
Пользователь
Регистрация: 13.11.2011
Сообщений: 11
|
Что касаемо ошибок. Бросилось в глаза сразу вот что:
1) protected не нужен. Используйте private. 2) Цитата:
3) Цитата:
4) Цитата:
5) Цитата:
6) Цитата:
7) Цитата:
8) Цитата:
9) Цитата:
Код:
The truth is out there...
|
||||||||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
классы, не могу найти ошибку! в С++ | нона | Помощь студентам | 3 | 18.10.2011 21:33 |
Не могу найти причину ошибки | pastuhdima | Помощь студентам | 0 | 06.10.2011 00:24 |
не могу найти раздел ошибки в delphi. подскажите please | V.OX | Свободное общение | 1 | 20.12.2009 23:22 |
Не могу найти две ошибки. | Lunex.08 | Общие вопросы C/C++ | 10 | 22.10.2009 09:44 |
Не могу найти ошибки в задачах | Кипятилка | Помощь студентам | 4 | 01.07.2009 17:58 |