#define _USE_MATH_DEFINES
#include <iostream>
#include <cmath>
#include <cstdlib>
class Body
{
public:
virtual double Area() const = 0;
virtual double Volume() const = 0;
};
class Parallelepiped: public Body
{
public:
Parallelepiped(double l, double w, double h) : length(l), width(w), height(h) {}
virtual double Area() const {
return 2 * (length * width + length * height + width * height);
}
virtual double Volume() const { return length * width * height; }
private:
double length, width, height;
};
class Ball: public Body
{
public:
Ball(double r) : radius(r) {}
virtual double Area() const { return 4 * M_PI * radius * radius; }
virtual double Volume() const { return 4 * M_PI * pow(radius, 3) / 3; }
private:
double radius;
};
int main()
{
setlocale(LC_ALL, "Russian");
int l, w, h, r;
std::cout << "Радиус: "; std::cin >> r;
std::cout << "Длина: "; std::cin >> l;
std::cout << "Ширина: "; std::cin >> w;
std::cout << "Высота: "; std::cin >> h;
Body * p = new Parallelepiped(l, w, h);
Body * b = new Ball(r);
std::cout << "Площадь параллелепипеда: " << p->Area() << "\nОбъём параллелепипеда: " << p->Volume();
std::cout << "\nПлощадь Шара: " << b->Area() << "\nобъём шара: " << b->Volume();
return 0;
}
C/C++
Посмотрите пожалуйста правильность написания кода С++
// Найдите отличия...
#include <iostream>
#include <vector>
#include <cmath>
#include <cstdlib>
using namespace std;
struct Body {
virtual const char* name()const = 0;
virtual double area() const = 0;
virtual double volume() const = 0;
virtual ~Body() = 0;
inline static const auto pi = 3.1415926535897932;
};
Body::~Body() {};
class Parallelepiped : virtual public Body {
public:
Parallelepiped(double l, double w, double h) : length(l), width(w), height(h) {}
~Parallelepiped()override {}
const char* name()const override {
return "Параллелепипед";
}
double area() const override {
return 2.0 * (length * width + length * height + width * height);
}
double volume() const override {
return length * width * height;
}
private:
double length, width, height;
};
class Ball : virtual public Body {
public:
Ball(double r) : radius(r) {}
~Ball()override {}
const char* name()const override {
return "Шар";
}
double area() const override {
return 4.0 * pi * radius * radius;
}
double volume() const override {
return 4.0 * pi * pow(radius, 3) / 3.0;
}
private:
double radius;
};
double real(const char* msg) {
cout << msg;
double value;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
void show(const Body* ptr) {
cout << ptr->name() << ":"
<< "\t\n- площадь: " << ptr->area()
<< "\t\n- объём: " << ptr->volume()
<< '\n';
}
int main() {
system("chcp 1251 > nul");
auto radius = real("Радиус: ");
auto length = real("Длина: ");
auto width = real("Ширина: ");
auto height = real("Высота: ");
Ball ball{ radius };
Parallelepiped parallelepiped{ length, width, height };
vector<Body*> box{ &ball, ¶llelepiped};
for (const auto& ptr : box) show(ptr);
puts("");
vector<Body*> fox{ new Parallelepiped{2.17, 3.18, 2.91 }, new Ball{ 1.75 } };
for (const auto& ptr : fox) {
show(ptr);
delete ptr;
}
system("pause > nul");
}
#include <iostream>
#include <vector>
#include <cmath>
#include <cstdlib>
using namespace std;
struct Body {
virtual const char* name()const = 0;
virtual double area() const = 0;
virtual double volume() const = 0;
virtual ~Body() = 0;
inline static const auto pi = 3.1415926535897932;
};
Body::~Body() {};
class Parallelepiped : virtual public Body {
public:
Parallelepiped(double l, double w, double h) : length(l), width(w), height(h) {}
~Parallelepiped()override {}
const char* name()const override {
return "Параллелепипед";
}
double area() const override {
return 2.0 * (length * width + length * height + width * height);
}
double volume() const override {
return length * width * height;
}
private:
double length, width, height;
};
class Ball : virtual public Body {
public:
Ball(double r) : radius(r) {}
~Ball()override {}
const char* name()const override {
return "Шар";
}
double area() const override {
return 4.0 * pi * radius * radius;
}
double volume() const override {
return 4.0 * pi * pow(radius, 3) / 3.0;
}
private:
double radius;
};
double real(const char* msg) {
cout << msg;
double value;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
void show(const Body* ptr) {
cout << ptr->name() << ":"
<< "\t\n- площадь: " << ptr->area()
<< "\t\n- объём: " << ptr->volume()
<< '\n';
}
int main() {
system("chcp 1251 > nul");
auto radius = real("Радиус: ");
auto length = real("Длина: ");
auto width = real("Ширина: ");
auto height = real("Высота: ");
Ball ball{ radius };
Parallelepiped parallelepiped{ length, width, height };
vector<Body*> box{ &ball, ¶llelepiped};
for (const auto& ptr : box) show(ptr);
puts("");
vector<Body*> fox{ new Parallelepiped{2.17, 3.18, 2.91 }, new Ball{ 1.75 } };
for (const auto& ptr : fox) {
show(ptr);
delete ptr;
}
system("pause > nul");
}
S M
это же почти такой же код что и у меня
S M
можете пожалуйста помочь с написанием комментарий (//) к коду?
правильность написания - это когда отсутствуют ошибки и код работает правильно..
S M
Помогите пожалуйста в коде С++ написать комментарии через двойной слеш (//), что обозначают выполняют функции (строчки) кода
Можно докопаться до того, что есть утечка памяти (которая самоустраняется при выходе), т. е. если использовали new, то обязаны использовать и delete, либо не использовать динамическое распределение памяти в данном случае, либо использовать умные указатели
Похожие вопросы
- Нужна помощь с написанием кода на языке "С"
- Возникла проблема при написании кода (с++). Помогите пожалуйста.
- C++.Нужна помощь в написании кода.
- Нужна помощь в написании кода С++, пожалуйста.(Структуры)
- Помогите, пожалуйста, срочно. Прокомментировать код на Си
- Помогите с написанием кода на Си для микроконтроллера
- Помощь в написании кода на C++
- Помогите с написанием кода С++
- Программирование c++. Помогите в написании кода!
- С++ Помогите пожалуйста исправить, дополнить код.