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

Разработать производный от абстрактного класса Figure класс и класс, производный от производного - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить количество локальных минимумов в заданном числовом массиве http://www.cyberforum.ru/cpp-beginners/thread1220819.html
Задание: составить схему алгоритма и программу решения задачи. Определить количество локальных минимумов в заданном числовом массиве. (Локальный минимум в числовом массиве – это последовательность трех рядом стоящих чисел, в которой среднее число меньше стоящих слева и справа от него).
C++ По номеру года вывести его название, если 1984 был началом цикла — годом зеленой крысы Помогите отладить программу задача которой : В восточном календаре принят 60-летний цикл, состоящий из 12-летних подциклов, обозначаемых названиями цвета: зеленый, красный, желтый, белый и черный. В каждом подцикле года носят названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. По номеру года вывести его название, если 1984 был... http://www.cyberforum.ru/cpp-beginners/thread1220818.html
C++ Ошибки при компиляции программы
#include "StdAfx.h" #include "math.h" #include <stdio.h> #include <iostream> using namespace std; int main () { setlocale(0,""); int x; std::cout<<"vvedite chislo:";
Клиент-сервер FTP C++
В общем необходимо создать FTP клиент-сервер, не могу понять как это сделать( Не могу никак сообразить как написать FTP сервер, исходников не могу найти.
C++ В одномерном массиве удалить те элементы, которые расположены в заданном с клавиатуры диапазоне http://www.cyberforum.ru/cpp-beginners/thread1220788.html
в одномерном массиве удалить те элементы, которые расположены в заданном с клавиатуры диапозоне С++ Добавлено через 52 минуты очень нужно, помогите... Добавлено через 1 час 7 минут #include <iostream> using namespace std; int main ()
C++ Перевод кода с Pascal var k,i,n,c:integer; p,w:real; begin write('k>-3 k='); readln(k); w:=0; c:=1; for i:=-3 to k do begin c:=-c;{-1^i} подробнее

Показать сообщение отдельно
Лапа
Сообщений: n/a
01.07.2014, 18:50     Разработать производный от абстрактного класса Figure класс и класс, производный от производного
Разработать базовый абстрактный класс Figure с пустым виртуальным методом print для вывода в дальнейшем полной информации об объекте: поля, площадь, периметр, и т.д. и могут быть другие виртуальные или пустые виртуальные методы.
Разработать производный от Figure класс и класс, производный от производного с полями и методами (указываются в варианте задания).
Создать класс треугольник, члены класса - длины 3-х сторон.
Предусмотреть в классе методы проверки существования треугольника,
вычисления и вывода сведений о фигуре – длины сторон, углы, периметр,
площадь. Создать производный класс – прямоугольный треугольник,
предусмотреть в классе проверку, является ли треугольник прямоугольным.
Написать программу, демонстрирующую работу с классом: дано M
треугольников и N прямоугольных треугольников, найти среднюю площадь
М треугольников и прямоугольный треугольник с наибольшей гипотенузой.

вот примерно что получилось:
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
#include <iostream>
#include <vector>
#include <cmath>
#include <stdexcept>
#include <cstdlib>
#include <ctime>
 
class Figure
{
virtual void print (void) = 0;
};
class Triangle : public Figure
{
protected:
double _a, _b, _c;
const static double pi = 3.14;
public:
//инициализация нулем
Triangle() : _a(0), _b(0), _c(0) {}
 
void Triangle::Print()
{printf("%lf %lf %lf\n", _a, _b, _c);
}
 
Triangle(double a, double b, double c) : _a(a), _b(b), _c(c) {}
Triangle(const Triangle& other) : _a(other._a), _b(other._b), _c(other._c) {}
// стороны
const double a() const 
{ 
return _a; 
}
const double b() const 
{ 
return _b; 
}
const double c() const 
{
return _c;
}
 
//периметр
const double perimeter() const 
{ 
return _a+_b+_c; 
}
 
//площадь треугольника(по формуле Герона)
const double area()const
{
double p;
p =(_a+_b+_c)/2;
return (sqrt(p*(p-(_a))*(p-(_b))*(p-(_c))));
}
//проверка на существование
const bool is_possible() const { return ((_a+_b)>_c) || ((_b+_c)>_a) || ((_a+_c)>_b); }
 
//проверка на то что треугольник прямоугольный
const bool is_right() const
{
return (((Ad()-90)<0.0001) || ((Bd()-90)<0.0001) || ((Cd()-90)<0.0001));
}
 
// углы, противолежащие соответствующим сторонам
const double A() const
{
double p = (_b*_b + _c*_c - _a*_a) / (2*_c*_b);
return acos(p-static_cast<int>(p));
}
const double B() const
{
double p = (-_b*_b + _c*_c + _a*_a) / (2.0*_a*_c);
return acos(p-static_cast<int>(p));
}
const double C() const
{
double p = (_b*_b - _c*_c + _a*_a) / (2.0*_a*_b);
return acos(p-static_cast<int>(p));
}
//переводит из радиан
const double Ad() const { return A()/(pi/180.); }
const double Bd() const { return B()/(pi/180.); }
const double Cd() const { return C()/(pi/180.); }
 
//вывод
friend std::ostream& operator« (std::ostream& out, const Triangle& z)
{
out « "a: " « z.a() « ", b: " « z.b() « ", c: " « z.c() « ". ";
if (z.is_possible())
out « "Area: " « z.area();
else
out « "Impossible triangle.";
return out;
}
};
 
class RightTriangle : public Triangle
{
public:
const double hypotenuse() const { return _c; }
RightTriangle(void) : Triangle(0, 0, 0) {}
RightTriangle(double a, double b) : Triangle(a, b, pow(a*a+b*b, .5)){}
 
//проверка, что треугольник прямоугольный
RightTriangle& operator= (const Triangle& other)
{
if (this!=&other)
{
if (other.is_right())
{
if (other.A()-90 < 0.0001)
{
_a = other.c();
_b = other.b();
_c = other.a();
} else
if (other.B()-90 < 0.0001)
{
_a = other.a();
_b = other.c();
_c = other.b();
} else
if (other.C()-90 < 0.0001)
{
_a = other.a();
_b = other.b();
_c = other.c();
}
}
else
throw (std::runtime_error("Not a right triangle."));
}
return *this;
}
 
//operator Triangle() const 
//{ 
// return Triangle(_a, _b, _c); 
//}
};
 
int main()
{
srand(static_cast<unsigned int>(time(0)));
int M = 10;
int N = 10;
std::vector<Triangle> z(M);
std::vector<RightTriangle> R(N);
 
std::cout « "Triangles: " « std::endl;
double max_of_areas = 0;
for (int i=0; i < z.size(); i++)
{
z[i] = Triangle((rand()%1000+500)/10., (rand()%1000+500)/10., (rand()%500+1)/10.);
std::cout « z[i] « std::endl;
if (z[i].Square() > z[max_of_areas].Square())
max_of_areas = 1;
}
std::cout«"Max of areas:"« max_of_areas«z[max_of_areas].Square « std::endl;
}
 
int index = 0;
cout « endl « "Right triangles: " « endl;
for (int i=0; i < R.size(); i++)
{
R[i] = RightTriangle((rand()%1000+500)/10., (rand()%1000+500)/10.);
std::cout « R[i] « std::endl;
if (R[i].hypotenuse() < R[index].hypotenuse())
index = i;
}
std::cout « "Min hypotenuse has triangle number " « index « ": " « R[index].hypotenuse() « std::endl;
 
}
 
[size="1"][color="grey"][I]Добавлено через 6 минут[/I][/color][/size]
вот еще ввод из файла. тоже беда!
 
File*Triangle;
int N=10;
int M=10;
vector<Triangle>z(N);
vector<RightTriangle>R(M);
if((Triangles=fopen("Tr.txt", "r"))==0)
{
cout<<"Error"<<endl;
return;
}
while (fscanf(Triangle "%lf %lf %lf", &a, &b, &c)!=EOF)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru