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

Диагонали (Четыре точки являются вершинами параллелограмма. Определить длину диагоналей и найти координаты ) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 5.00
antimat
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 47
28.05.2013, 10:33     Диагонали (Четыре точки являются вершинами параллелограмма. Определить длину диагоналей и найти координаты ) #1
Помогите!!!
Четыре точки A(x1; y1), B(x2; y2), C(x3; y3), D(x4; y4) являются вершинами параллелограма. Определить длину диагоналей и найти координаты точки их пересечения.

Входные данные

В 4-х строках через пробел заданы x и y координаты последовательных вершин параллелограма, соответственно точек A, B, C и D. Все числа по абсолютной величине не превышают 100.

Выходные данные

В первой строке вывести через пробел x и y координаты точки O, во второй - длину диагонали AC и через пробел - BD. Результаты вывести с точностью до тысячных.


Пример входных данных
4 6
11 6
10 2
3 2
Пример выходных данных
7.000 4.000
7.211 8.944

Добавлено через 20 часов 39 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <math.h>
#include <stdio.h>
 
using namespace std;
 
void main()
{  
    double x1,x2,x3,x4,y1,y2,y3,y4,ac,bd,o;
   cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4;
   o = (x1*x3+y1*y3)/2;
    printf("%.3lf",o);
  ac = sqrt(pow((x1-x3),2)+pow((y1-y3),2));
  bd = sqrt(pow((x2-x4),2)+pow((y2-y4),2));
  printf("%.3lf,%.3lf",ac,bd);
  cout<<endl;
 
 }
Помогите довести до ума)

Добавлено через 18 минут
Координаты т.О:x=(x1+x3)/2;y=(y1+y3)/2

Добавлено через 14 минут
Как в коде записать и вывести координаты т.О?Подскажите пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2013, 10:33     Диагонали (Четыре точки являются вершинами параллелограмма. Определить длину диагоналей и найти координаты )
Посмотрите здесь:

C++ Даны целые числа. Выяснить, найдутся ли среди точек четыре таких, которые являются вершинами квадрата
C++ Даны четыре точки А1(x1, y1), А2(x2, y2), А3(x3, y3), А4(x4, y4). Определить будут ли они вершинами параллелограмма.
C++ заданы координаты трех точек. Напишите программу, которая проверяет, являются ли эти точки вершинами треугольника.
C++ Являются ли точки вершинами треугольника
Являются ли точки вершинами прямоугольного треугольника C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
28.05.2013, 10:55     Диагонали (Четыре точки являются вершинами параллелограмма. Определить длину диагоналей и найти координаты ) #2
Цитата Сообщение от antimat Посмотреть сообщение
Как в коде записать и вывести координаты т.О?Подскажите пожалуйста!
В точке пересечения диагоналей параллелограмма, диагонали делятся пополам. Необходимо найти координаты середины одной из диагоналей. Формулу Вы указали правильную. Вывести это на экран очень просто:
C++
1
cout << "Координаты пересечения диагоналей O = (" << (x1 + x3)/2 << ", " << (y1 + y3) / 2 << ")" << endl;
antimat
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 47
28.05.2013, 11:01  [ТС]     Диагонали (Четыре точки являются вершинами параллелограмма. Определить длину диагоналей и найти координаты ) #3
Спасибо!только мне нужно вывести в printf("%.3lf",o) и через пробел!?
_Mutex
Заблокирован
28.05.2013, 11:13     Диагонали (Четыре точки являются вершинами параллелограмма. Определить длину диагоналей и найти координаты ) #4
C++
1
printf("%.3lf %.3lf",o,o1)
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
28.05.2013, 11:16     Диагонали (Четыре точки являются вершинами параллелограмма. Определить длину диагоналей и найти координаты ) #5
У меня получилось вот так вот (с++ Visual Studio 2010):
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
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    double x1, x2, x3, x4, y1, y2, y3, y4;
 
    cout << "Введите координаты вершин параллелограмма через пробел: ";
    cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3 >> x4 >> y4;
 
    if (y1 != y2 || y3 != y4 || x2 - x1 != x3 - x4)
        cout << "Такого параллелограмма не существует"<< endl;
    else
    {
        cout << "Длина диагонали AC = " << setprecision(3) << setiosflags(ios::fixed | ios::showpoint)
             << sqrt(pow(x3 - x1, 2) + pow(y3 - y1, 2)) << endl;
        cout << "Длина диагонали BD = " << setprecision(3) << setiosflags(ios::fixed | ios::showpoint)
             << sqrt(pow(x4 - x2, 2) + pow(y4 - y2, 2)) << endl;
        cout << "Координаты точки пересечения диагоналей: (" << (x1 + x3)/2 << ", " << (y1 + y3)/2 << ")" << endl;
    }
 
    system("pause");
    return 0;
}
Очень важный момент: обязательно нужно проверять, является ли введенная фигура параллелограммом. Надеюсь, тут я не ошибся, но лучше проверить:
C++
1
2
 if (y1 != y2 || y3 != y4 || x2 - x1 != x3 - x4)
        cout << "Такого параллелограмма не существует"<< endl;
Результат:
Миниатюры
Диагонали (Четыре точки являются вершинами параллелограмма. Определить длину диагоналей и найти координаты )  
antimat
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 47
28.05.2013, 11:20  [ТС]     Диагонали (Четыре точки являются вершинами параллелограмма. Определить длину диагоналей и найти координаты ) #6
это вывод 2-х отдельных координат т.О(x и y). а мне нужно посчитать и вывести координаты т.О(x;y) одной точкой О!
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
28.05.2013, 11:24     Диагонали (Четыре точки являются вершинами параллелограмма. Определить длину диагоналей и найти координаты ) #7
Цитата Сообщение от antimat Посмотреть сообщение
это вывод 2-х отдельных координат т.О(x и y). а мне нужно посчитать и вывести координаты т.О(x;y) одной точкой О!
Если точка располагается на плоскости, то она имеет 2 координаты. Выразить ее одной? Я всегда думал, что это невозможно. Даже погуглил сейчас на всякий случай и ничего не нашел. Если Вы знаете метод, поделитесь.
Мне кажется, вы не правильно поняли условие задачи.
В первой строке вывести через пробел x и y координаты точки O, во второй - длину диагонали AC и через пробел - BD. Результаты вывести с точностью до тысячных.
Нужно вывести длины диагоналей ( правда через пробел, но мне кажется. что у меня приятнее будет ) и x и y координаты точки их пересечения.
antimat
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 47
28.05.2013, 22:51  [ТС]     Диагонали (Четыре точки являются вершинами параллелограмма. Определить длину диагоналей и найти координаты ) #8
спасибо! классно сделано!)

Добавлено через 2 часа 45 минут
Цитата Сообщение от Мимино Посмотреть сообщение
cout << "Координаты точки пересечения диагоналей: (" << (x1 + x3)/2 << ", " << (y1 + y3)/2 << ")" << endl;
как вывести эту строку в первую очередь и координаты имели вид (7.000 4.000)?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2013, 22:56     Диагонали (Четыре точки являются вершинами параллелограмма. Определить длину диагоналей и найти координаты )
Еще ссылки по теме:

C++ Найти координаты четвертой вершины параллелограмма
C++ Заданы координаты трех точек. Определить периметр треугольника, вершинами которого являются заданные точк
Если точки могут быть вершинами равностороннего треугольника, вычислить его площадь и длину высоты C++

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

Или воспользуйтесь поиском по форуму:
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
28.05.2013, 22:56     Диагонали (Четыре точки являются вершинами параллелограмма. Определить длину диагоналей и найти координаты ) #9
Цитата Сообщение от antimat Посмотреть сообщение
как вывести эту строку в первую очередь и координаты имели вид (7.000 4.000)?
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
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    double x1, x2, x3, x4, y1, y2, y3, y4;
 
    cout << "Введите координаты вершин параллелограмма через пробел: ";
    cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3 >> x4 >> y4;
 
    if (y1 != y2 || y3 != y4 || x2 - x1 != x3 - x4)
        cout << "Такого параллелограмма не существует"<< endl;
    else
    {
        cout << "Координаты точки пересечения диагоналей: (" << setprecision(3) 
               << setiosflags(ios::fixed | ios::showpoint) << (x1 + x3)/2 << ", " << (y1 + y3)/2 << ")" << endl;
        cout << "Длина диагонали AC = " << setprecision(3) << setiosflags(ios::fixed | ios::showpoint)
             << sqrt(pow(x3 - x1, 2) + pow(y3 - y1, 2)) << endl;
        cout << "Длина диагонали BD = " << setprecision(3) << setiosflags(ios::fixed | ios::showpoint)
             << sqrt(pow(x4 - x2, 2) + pow(y4 - y2, 2)) << endl;        
    }
 
    system("pause");
    return 0;
}
C++
1
setprecision(3)
- задает количество точек после запятой
C++
1
setiosflags(ios::fixed |ios::showpoint)
- задает вид числа. В данном случае всегда выводится целая часть и часть после точки, даже если число целое.
C++
1
#include <iomanip>
- нужно, чтобы это все работало.
Yandex
Объявления
28.05.2013, 22:56     Диагонали (Четыре точки являются вершинами параллелограмма. Определить длину диагоналей и найти координаты )
Ответ Создать тему
Опции темы

Текущее время: 11:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru