2 / 2 / 0
Регистрация: 18.09.2015
Сообщений: 72
1

По заданным координатам вершин прямоугольника ABCD найти его площадь и периметр

20.02.2016, 14:50. Показов 19187. Ответов 8
Метки нет (Все метки)

Известны координаты вершин прямоугольника ABCD , A(x1,y1), B(x2,y2), C(x3,y3). Найти площадь и периметр.
Напишите пожалуйста полностью код с выводом. Буду очень благодарен.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.02.2016, 14:50
Ответы с готовыми решениями:

Вычислить периметр и площадь треугольника по заданным координатам его вершин
Помогите решить задачу! Вычислить периметр и площадь треугольника по заданным координатам его...

По координатам трех вершин треугольника найти его периметр и площадь
1) Даны координаты трех вершин треугольника (x1, y1), (x2, y2), (x3, y3). Найти его периметр и...

По координатам трех вершин некоторого треугольника найти его площадь и периметр.
По координатам трех вершин некоторого треугольника найти его площадь и периметр. Предусмотреть...

По заданным координатам вершин треугольника найти стороны и площадь
По заданным координатам вершин треугольника найти стороны и площадь.

8
Модератор
Эксперт С++
12633 / 10129 / 6099
Регистрация: 18.12.2011
Сообщений: 27,162
20.02.2016, 15:20 2
Как-то странно у Вас задан прямоугольник (нельзя задавать произвольные значение для B).
Гораздо логичнее было бы задать А, C и угол наклона к осям координат.
Если предположить, что данные правильные, то
C++
1
2
3
4
double a1=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
double a2=sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
double s=a1*a2;
double p=2.0*(a1+a2);
Проверка правильности: скалярное произведение должно быть равно нулю
C++
1
2
3
double sp=(x2-x1)*(x3-x2)+(y2-y1)*(y3-y2);
if(fabs(sp)>1e-10)
  cout<<"Это не прямоугольник";
2
2 / 2 / 0
Регистрация: 18.09.2015
Сообщений: 72
20.02.2016, 15:27  [ТС] 3
Большое спасибо, но можно пожалуйста полностью код, c меня спасибки)
0
20 / 20 / 20
Регистрация: 21.12.2015
Сообщений: 32
20.02.2016, 20:22 4
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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    double x_A,y_A,x_B,y_B,x_C,y_C,x_D,y_D;
    double  d1,d2,d3,d4,S,P;
    cout<<"Введите через пробел координаты точки А: "<<endl;
    cin>>x_A>>y_A;
    cout<<"Введите через пробел координаты точки B:"<<endl;
    cin>>x_B>>y_B;
    cout<<"Введите через пробел координаты точки C:"<<endl;
    cin>>x_C>>y_C;
    cout<<"Введите через пробел координаты точки D:"<<endl;
    cin>>x_D>>y_D;
    d1=sqrt(pow(x_B-x_A,2)+pow(y_B-y_A,2));
    d2=sqrt(pow(x_C-x_B,2)+pow(y_C-y_B,2));
    d3=sqrt(pow(x_D-x_C,2)+pow(y_D-y_C,2));     
    d4=sqrt(pow(x_A-x_D,2)+pow(y_A-y_D,2)); 
    S=d1*d2;
    P=d1+d2+d3+d4;
    cout<<S<<endl;
    cout<<P<<endl;
    system("pause");
}
2
Модератор
Эксперт С++
12633 / 10129 / 6099
Регистрация: 18.12.2011
Сообщений: 27,162
21.02.2016, 08:55 5
Timbl4, А что делать, если получится, что d1!=d3 или d2!=d4
Допишите Ваш пример с учетом моего поста №2.
1
20 / 20 / 20
Регистрация: 21.12.2015
Сообщений: 32
21.02.2016, 09:55 6
Лучший ответ Сообщение было отмечено Hidan990 как решение

Решение

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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    double x_A,y_A,x_B,y_B,x_C,y_C,x_D,y_D;
    double  d1,d2,d3,d4,S,P;
    cout<<"Введите через пробел координаты точки А: "<<endl;
    cin>>x_A>>y_A;
    cout<<"Введите через пробел координаты точки B:"<<endl;
    cin>>x_B>>y_B;
    if(x_B==x_A && y_A==y_B)
    { cout<<"Вы ввели неправильные координаты точки!"<<endl; system("pause"); return 0;}
    cout<<"Введите через пробел координаты точки C:"<<endl;
    cin>>x_C>>y_C;
    if(x_C==x_A && y_C==y_A || x_C==x_B && y_C==y_B)
    { cout<<"Вы ввели неправильные координаты точки!"<<endl; system("pause"); return 0;}
    cout<<"Введите через пробел координаты точки D:"<<endl;
    cin>>x_D>>y_D;
    if(x_D==x_A && y_D==y_A || x_D==x_B && y_D==y_B || x_D==x_C && y_D==y_C )
    { cout<<"Вы ввели неправильные координаты точки!"<<endl; system("pause"); return 0;}
    d1=sqrt(pow(x_B-x_A,2)+pow(y_B-y_A,2));
    d2=sqrt(pow(x_C-x_B,2)+pow(y_C-y_B,2));
    d3=sqrt(pow(x_D-x_C,2)+pow(y_D-y_C,2));     
    d4=sqrt(pow(x_A-x_D,2)+pow(y_A-y_D,2)); 
    double sk_pr=(x_B-x_A)*(x_C-x_B)+(y_B-y_A)*(y_C-y_B);
    if(fabs(sk_pr)>1e-10){
    cout<<"Это не прямоугольник";
    system("pause");
    return 0;
    }
    S=d1*d2;
    P=d1+d2+d3+d4;
    cout<<S<<endl;
    cout<<P<<endl;
    system("pause");
}
3
Модератор
Эксперт С++
12633 / 10129 / 6099
Регистрация: 18.12.2011
Сообщений: 27,162
21.02.2016, 10:26 7
Timbl4, В сравнении совпадения точек нужно тоже задавать точность
C++
1
2
if(  fabs(x_B-x_A)<1e-10 && fabs(y_A-y_B)<1e-10)
...
1
20 / 20 / 20
Регистрация: 21.12.2015
Сообщений: 32
21.02.2016, 10:32 8
zss, Спасибо, что-то я не обратил на это внимание
1
0 / 0 / 0
Регистрация: 02.03.2020
Сообщений: 30
11.10.2020, 20:43 9
Цитата Сообщение от Timbl4 Посмотреть сообщение
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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    double x_A,y_A,x_B,y_B,x_C,y_C,x_D,y_D;
    double  d1,d2,d3,d4,S,P;
    cout<<"Введите через пробел координаты точки А: "<<endl;
    cin>>x_A>>y_A;
    cout<<"Введите через пробел координаты точки B:"<<endl;
    cin>>x_B>>y_B;
    cout<<"Введите через пробел координаты точки C:"<<endl;
    cin>>x_C>>y_C;
    cout<<"Введите через пробел координаты точки D:"<<endl;
    cin>>x_D>>y_D;
    d1=sqrt(pow(x_B-x_A,2)+pow(y_B-y_A,2));
    d2=sqrt(pow(x_C-x_B,2)+pow(y_C-y_B,2));
    d3=sqrt(pow(x_D-x_C,2)+pow(y_D-y_C,2));     
    d4=sqrt(pow(x_A-x_D,2)+pow(y_A-y_D,2)); 
    S=d1*d2;
    P=d1+d2+d3+d4;
    cout<<S<<endl;
    cout<<P<<endl;
    system("pause");
}
Можете переделать эту программу под С(Си)?
Очень нужно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.10.2020, 20:43
Помогаю со студенческими работами здесь

Даны стороны прямоугольника a и b Найти его площадь S и периметр P
1)Даны стороны прямоугольника a и b. Найти его площадь S

Найти периметр треугольника, определив функцию, рассчитывающую длину отрезка по координатам его вершин
Найдите периметр треугольника, заданного координатами вершин, определив функцию, рассчитывающую...

Вычислить площадь и периметр треугольника по координатам трех вершин
Вычислить площадь и периметр треугольника по координатам трех вершин. Известны координаты вершин...

Треугольник задан координатами вершин. Найти его периметр и площадь
Здравствуйте. Помогите пожалуйста исправить программу для ТС. Даны координаты вершин треугольника....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru