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

Даны координаты вершин треугольника, и нужно найти наибольший угол в нем - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Составить программу вычисления количества всех делителей всех чисел от 1 до n http://www.cyberforum.ru/cpp-beginners/thread1075467.html
Дано натуральное число n.Составить программу вычисления количества всех делителей всех чисел от 1 до n
C++ Считать посимвольно файл стандартными средствами и итераторами Необходимо прочитать файл в котором находится мусор, из файла требуются только определенные символы (сам сделаю) и поместить это в контейнер map Пока набросал только это: #include <iostream> #include <fstream> #include <iterator> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread1075457.html
C++ Написать программу, которая автоматизирует процесс гадания
#include<iostream> using namespace std; int main() { freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); int n,k,s=0; cin>>n; for( k=1;k<=n;k++){ if(n%k==0)s=s+k;
Найти сумму заштрихованных треугольников через цикл C++
В общем такая тема: у меня задача я написал код, но сдать задачу не могу, т.к нужно чтобы сумму заштрихованных треугольников находилось через цикл! помогите организовать цикл! вот мой код: #include <iostream> #include <fstream> #include <iomanip> #include <cstdio> #include <cstring> #include <conio.h> #include <Windows.h>
C++ Как переставить в обратном порядке элементы главной диагонали? http://www.cyberforum.ru/cpp-beginners/thread1075444.html
#include <stdio.h> #define M 7 #define N 7 void main(void) {int A={1,2,3,5,6,7,8,9,2,1,2,3,5,6,7,8,3,0,1,2,3,5,6,7,4,9,0,1,2,3,5,6,5,8,9,0,1,2,3,5,6,7,8,9,1,2,3,4,7}; int i,j,k;
C++ Элементы массивов a и b отсортировать в порядке возрастания. Образовать из этих массивов "c" из M+N элементов 1.даны массивы a и b. элементы массивов a и b отсортировать в порядке возрастания.образовать из этих массивов "c" из M+N элементов. количества M,N и значения элементов массивов a,b ввести с клавиатуры. ограничения: M<=10, N<=10, диапазон значений элементов , тип элементов - целые. 2.дана прямоугольная матрица b.определить индекс столбца, среднее арифметическое значение элементов которого... подробнее

Показать сообщение отдельно
bes4etnov
 Аватар для bes4etnov
0 / 0 / 0
Регистрация: 19.01.2014
Сообщений: 9
19.01.2014, 14:23     Даны координаты вершин треугольника, и нужно найти наибольший угол в нем
Всем привет!

Решаю задачку {ссылка удалена} (Задача А), где даны координаты вершин треугольника, и нужно найти наибольший угол в нем.

 Комментарий модератора 
Задание должно быть перепечатано на форум.
Прикрепляйте файлы и изображения к сообщениям.
Создавайте тему в соответствующем разделе.


Добавлено через 5 минут
Ну так вот.

Это код моей программы
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
40
41
42
43
44
45
46
47
48
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;
 
const double PI = acos(-1);
double max = 0;
 
struct vect {   // Структура "вектор".
    int x, y;
    vect(int _x, int _y) : x(_x), y(_y){}
};
 
int operator * (vect a, vect b){    // Скалярное произведение векторов.
    return a.x*b.x + a.y*b.y;
}
 
double operator ^ (vect a, vect b){ // Угол мужду векторами (возвращает косинус).
    return (a*b)/(sqrt(a.x*a.x + a.y*a.y) * sqrt(b.x*b.x + b.y*b.y));
}
 
void compare(vect a, vect b){
    if (max < acos(a^b) * 180 / PI)
        max = acos(a^b) * 180 / PI;
}
 
int main(){
    ifstream cin("input.txt");
    ofstream cout("output.txt");
    cout.setf(ios::fixed);
    cout.precision(10);
    int x1, x2, x3, y1, y2, y3; 
 
    cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
 
    vect a(x1 - x2, y1 - y2), b(x3 - x2, y3 - y2);
    compare(a, b);
    a.x = x1 - x3; a.y = y1 - y3; b.x = x2 - x3; b.y = y2 - y3;
    compare(a, b);
    a.x = x2 - x1; a.y = y2 - y1; b.x = x3 - x1; b.y = y3 - y1;
    compare(a, b);
 
    cout << max;
 
    cin.close();
    cout.close();
    return 0;
}
Она работает правильно.

Но иногда возникает проблема с точностью вычислений:
например, когда вводишь координаты 0;0, 2;2, 4;4 (лежат на одной прямой), то вместо 180 программа выводит очень необычный ответ: 179.9999987926.

В чем дело, я так и не понял.
В интернете ничего дельного не нашел...

Возможно, это как-то связано с функциями sqrt() и acos().

Как вы думаете, в чем проблема?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru