C/C++

1 курс, написать программу на С++

Написать программу на С++ уровня 1 курса. Условие: Даны координаты двух противоположных вершин прямоугольника: (х1,у1), (х2,у2). Стороны прямоугольника параллельны осям координат. Найти периметр и площадь данного прямоугольника.
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
struct Point {
double x, y;
Point() : x(0), y(0) {}
Point(double x, double y) : x(x), y(y) {}
double length(const Point& p)const {
return sqrt(pow(p.x - x, 2) + pow(p.y - y, 2));
}
};
class Rectangle {
public:
Rectangle(const Point& a, const Point& c) : a(a), b(c.x, a.y), c(c), d(a.x, c.y) {}
double perimeter()const {
auto ab = a.length(b);
auto ad = a.length(d);
return (ab + ad) * 2;
}
double area()const {
return a.length(b) * a.length(d);
}
private:
Point a, b, c, d;
};
double coord(const string& name) {
cout << name;
double value;
cin >> value;
return value;
}
Point point(const string& name) {
Point p;
p.x = coord(name + "x: ");
p.y = coord(name + "y: ");
return p;
}
int main() {
auto a = point("A");
auto b = point("B");
Rectangle rect(a, b);
auto p = rect.perimeter();
auto s = rect.area();
cout << fixed << setprecision(2)
<< "P: " << p << '\n'
<< "S: " << s << '\n';
system("pause > nul");
}
Сергей Зайцев
Сергей Зайцев
94 586
Лучший ответ
#include iosteam
#include cmath

using namespace std;

double square(double, double);
double perimetr(double, double);

int main()
{
setlocale(LC_ALL, "RUS");
double x1, y1, x2, y2;
cout << "Введите координаты противоположных углов прямоугольника." << endl << "x1, y1, x2, y2: ";
cin >> x1 >> y1 >> x2 >> y2;
double A = fabs(x1 - x2);
double B = fabs(y1 - y2);
cout << "\nСтороны прямоугольника: " << A << " " << B << endl;
cout << "Периметр прямоугольника: " << perimetr(A, B) << endl;
cout << "Площадь прямоугольника: " << square(A, B) << endl;
};

double perimetr(double a, double b)
{
return 2 * (a + b);
};

double square(double a, double b)
{
return a * b;
};

Где #include, iostream и cmath должны быть помещены в треугольные скобки" < > "
Сергей Новоселов Можно вместо fabs использовать abs и тогда не надо подключать библиотеку cmath
Это конечно не то что тебе нужно, но тоже прикольно
Там ещё сам квадрат рисуется
P.S.: синтаксис ужасно исказился исказился потому что копировал из другого редактора

#include iostream
using namespace std;
int main(){
setlocale(LC_ALL, "rus");
char a[10][10];
int Ax,Ay,Bx,By,Cx,Cy,Dx,Dy;
cin>>Ax>>Ay>>Cx>>Cy;
Bx=Ax;
By=Cy;
Dx=Cx;
Dy=Ay;
for(int y=0; y<10; y++){
for(int x=0; x<10; x++){
a[x][y]=' ';}}
a[Ax][Ay]='#';
a[Bx][By]='#';
a[Cx][Cy]='#';
a[Dx][Dy]='#';
for(int i=1; iBy){
a[Bx][By+i]='|';
a[Cx][Cy+i]='|';
}
if(Ay<By){
a[Ax][Ay+i]='|';
a[Dx][Dy+i]='|';
}
}
for(int j=1; jBx){
a[Bx+j][By]='-';
a[Ax+j][Ay]='-';}
if(Cx<Bx){
a[Cx+j][Cy]='-';
a[Dx+j][Dy]='-';
}
}
for(int dy=0; dy<10; dy++){
for(int dx=0; dx<10; dx++){
cout<<a[dx][dy]<<" ";
}
cout<<endl;
}
cout<<"Sabcd="<<(abs(Cx-Bx)+1)*(abs(Ay-By)+1);
cout<<endl<<"Pabcd="<<2*(abs(Cx-Bx)+abs(Ay-By)+2);
return 0;
}
iostream в скобках в виде стрелочек должен быть <>
Юрий Мельниченко Хотя нет, фигня, из-за того что ответы майл ру не дают нормально стрелки писать, у меня пол кода исчезло, блин