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

Определить координаты вершины треугольника - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как скомпилировать программу на Mac OS http://www.cyberforum.ru/cpp-beginners/thread209094.html
Например, написал я программу на Си в TextEdit, теперь мне нужно её скомпилировать. Я установил gcc 4.2 который идёт в комплекте с xcode. Как мне теперь скомпилировать написанную программу?
C++ Найти число в двоичной записи которого максимальное число единиц Среди простых чисел ,не превосходящих N ,найти такое ,в двоичной записи которого максимальное число единиц. Уважаемые форумчане помогите с кодом, буду очень благодарен. http://www.cyberforum.ru/cpp-beginners/thread209088.html
C++ Найти непрерывные участки, на которых сумма элементов равна 100
Найти непрерывные участки, на которых сумма элементов равна 100 Что-то я тут намудрил... Помогите поправить.. #include "stdafx.h" #include <iostream> #include <ctime> using namespace std; int _tmain(int argc, _TCHAR* argv) {
как в файле вывести все в стречку и не в столбик ?!!?! C++
здравствуйте помогите с выводом в файл обычный "txt."... вот мой код и что делает программа "Умножить каждое четное число на первое отрицательное число. Добавить к каждому числу половину последнего отрицательного числа." /--------------------------------------------------------------------------- #pragma hdrstop #include <stdio.h> #include <conio.h> #include <list.h> #include...
C++ Нахождение определителя матрицы n-го порядка без рекурсии http://www.cyberforum.ru/cpp-beginners/thread209084.html
Здравствуйте, мне на дом дали задачу на С++ написать программу которая находит определитель матрицы n го порядка, я довольно быстро её реализовал рекурсивным методом, а потом задумался "а можно ли сделать тоже самое без рекурсии"?..долго ломал голову и не выдержал..решил спросить у вас:)
C++ Вывод символа слева и его соответствующего кода ASCII справа Собственно вопрос как это сделать? подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2807 / 1583 / 248
Регистрация: 03.05.2010
Сообщений: 3,688
25.12.2010, 10:36     Определить координаты вершины треугольника
Цитата Сообщение от Stormfire Посмотреть сообщение
Что-то я совсем запутался. Какая из программ правильная ?
Ну, ежели для вас программа, для которой приведены примеры неправильной работы, может считаться правильной, то вы неизбежно запутаетесь.
А какие у вас сомнения относительно правильности моей программы, мне просто интересно?

Добавлено через 1 час 48 минут
Цитата Сообщение от accept Посмотреть сообщение
при любой точке B координаты точки C будут одними из:
С(0; 1) || С(1; 0) || С(-1; 0) || С(0; -1)
Эта тема какой-то чемпион по количеству ложных утверждений.
Если рассматривать вершины B и C как векторы, то площадь треугольника равна половине площади построенного на них параллелограмма, т.е.

S = 0.5 * abs(Bx*Cy – By*Cx),

т.е. задача состоит в поиске минимальной по модулю ненулевой линейной комбинации чисел Bx и By, которая, согласно известной теореме, равна по модулю НОД(Bx, By), а минимальная площадь треугольника, соответственно,

Smin = 0.5 * НОД(Bx, By),

как уже здесь писали выше.
Если числа Bx и By взаимно простые, то НОД(Bx, By) = 1, и Smin = 0.5 (один из выступавших посчитал, что это верно для всех случаев).
Если же Bx делит By, то НОД(Bx, By) = |Bx|, и площадь равна
Smin = 0.5 * |Bx|,
и в этом случае решением будет Cx = 0, Cy = 1.
Если же By делит Bx, то, соответственно, Cx = 1, Cy = 0,
т.е. вы приняли за общий случай другую крайность (только еще со знаками там заморочились, которые, на самом деле, ни на что не влияют).
Ну а истина лежит посередине, т.е. в моей программе.

Добавлено через 3 часа 22 минуты
Вот так покрасивше будет:

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//////////////////////////////////////////////////////////////////////////////////////
//Для треугольника с целокоординатными вершинами по известным вершинам A(0, 0) и B 
//найти такую вершину C, чтобы площадь треугольника была минимально возможной.
//////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <cmath>
#include <iostream>
//////////////////////////////////////////////////////////////////////////////////////
int  gcd(int A, int B)
{
    if(!B) return abs(A);    
    return  gcd(abs(B), abs(A) % abs(B));
}
//////////////////////////////////////////////////////////////////////////////////////
void  get_C_vertice(int  Bx, int  By, int&  Cx, int&  Cy)
{
    if(!Bx)
    {
        Cx = 1;
        Cy = 0;    
        return;
    }
 
    int  gcd_Bx_By = gcd(Bx, By);   
 
    for(Cx = 0; (By * Cx + gcd_Bx_By) % Bx; ++Cx);
    Cy = (By * Cx + gcd_Bx_By) / Bx;
}
//////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale("")); 
    int Bx = 0;
    int By = 0;
 
    do
    {
        std::cout << std::endl
                  << "Введите координаты вершины B:"
                  << std::endl;
        
        std::cout << "Bx = ";
        std::cin >> Bx;
 
        
        std::cout << "By = ";
        std::cin >> By;    
    }while(   Bx == 0
           && By == 0);
 
    int Cx = 0;
    int Cy = 0;
 
    get_C_vertice(Bx, By, Cx, Cy);
    std::cout << "При заданных вершинах треугольника A(0, 0) и B("
              << Bx
              << ", "
              << By
              << ")"
              << std::endl
              << "треугольник будет иметь минимально возможную площадь "
              << std::endl
              << "при вершине в точке C("
              << Cx
              << ", "
              << Cy
              << ")."
              << std::endl;             
}
 
Текущее время: 06:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru