Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Линейные конструкции на C++. Помогите решить ошибку в задаче

Тема Новиков Ученик (81), на голосовании 2 недели назад
Помогите изменить код, чтобы оно проверяло, что по координатам фигура действительно является прямоугольником.
 setlocale(LC_ALL, "Russian"); 
double x_A, y_A, x_B, y_B, x_C, y_C, x_D, y_D;
double d1, d2, S;
std::cout << "Введите через пробел координаты точки А: " << std::endl;
std::cin >> x_A >> y_A;
std::cout << "Введите через пробел координаты точки B:" << std::endl;
std::cin >> x_B >> y_B;
std::cout << "Введите через пробел координаты точки C:" << std::endl;
std::cin >> x_C >> y_C;
std::cout << "Введите через пробел координаты точки D:" << std::endl;
std::cin >> x_D >> y_D;
d1 = sqrt(pow(x_B - x_A, 2) + pow(y_B - y_A, 2));
d2 = sqrt(pow(x_D - x_C, 2) + pow(y_D - y_C, 2));
S = d1 * d2;
std::cout << S << std::endl;
system("pause");
Голосование за лучший ответ
Тимофей Интеллект дохуя Ученик (226) 1 месяц назад
етижи пассатижи using namespace std для кого придумали?

 #include <iostream> 
#include <cmath>
#include <locale>

using namespace std;

double distance(double x1, double y1, double x2, double y2) {
return sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
}

bool isRectangle(double x_A, double y_A, double x_B, double y_B, double x_C, double y_C, double x_D, double y_D) {
double AB = distance(x_A, y_A, x_B, y_B);
double BC = distance(x_B, y_B, x_C, y_C);
double CD = distance(x_C, y_C, x_D, y_D);
double DA = distance(x_D, y_D, x_A, y_A);

bool sidesEqual = (AB == CD) && (BC == DA);

double vectorAB_x = x_B - x_A;
double vectorAB_y = y_B - y_A;
double vectorBC_x = x_C - x_B;
double vectorBC_y = y_C - y_B;
double vectorCD_x = x_D - x_C;
double vectorCD_y = y_D - y_C;
double vectorDA_x = x_A - x_D;
double vectorDA_y = y_A - y_D;

bool rightAngles = (vectorAB_x * vectorBC_x + vectorAB_y * vectorBC_y == 0) &&
(vectorBC_x * vectorCD_x + vectorBC_y * vectorCD_y == 0) &&
(vectorCD_x * vectorDA_x + vectorCD_y * vectorDA_y == 0) &&
(vectorDA_x * vectorAB_x + vectorDA_y * vectorAB_y == 0);

return sidesEqual && rightAngles;
}

int main() {
setlocale(LC_ALL, "Russian");
double x_A, y_A, x_B, y_B, x_C, y_C, x_D, y_D;

cout << "Введите через пробел координаты точки A (x y): " << endl;
cin >> x_A >> y_A;
cout << "Введите через пробел координаты точки B (x y): " << endl;
cin >> x_B >> y_B;
cout << "Введите через пробел координаты точки C (x y): " << endl;
cin >> x_C >> y_C;
cout << "Введите через пробел координаты точки D (x y): " << endl;
cin >> x_D >> y_D;

if (isRectangle(x_A, y_A, x_B, y_B, x_C, y_C, x_D, y_D)) {
cout << "Фигура является прямоугольником." << endl;
} else {
cout << "Фигура не является прямоугольником." << endl;
}

cout << "Нажмите Enter, чтобы выйти..." << endl;
cin.ignore(); // очищаем буфер ввода
cin.get(); // ждем нажатия клавиши
return 0;
}
не зря в вузе учился :D

но ты протестируй, если че
Тема НовиковУченик (81) 1 месяц назад
А можно ещё чтобы она площадь находила?
Тема НовиковУченик (81) 1 месяц назад
Пожалуйста
Тимофей Интеллект дохуя Ученик (226) на здоровье, только и сам учись. 1 часть (ограничение по символам)
 #include <iostream>  
#include <cmath>  
using namespace std;  
double distance(double x1, double y1, double x2, double y2) {  
    return hypot(x2 - x1, y2 - y1);  
}  
bool isRectangle(double x_A, double y_A, double x_B, double y_B, double x_C, double y_C, double x_D, double y_D) {  
    double AB = distance(x_A, y_A, x_B, y_B), BC = distance(x_B, y_B, x_C, y_C);  
    double CD = distance(x_C, y_C, x_D, y_D), DA = distance(x_D, y_D, x_A, y_A);  
 
Похожие вопросы