Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C/C++] Вывести вершины треугольника в порядке, обхода по часовой стрелке 
V
    Опции темы
En_t_end
Дата 16.9.2006, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 2
Всего: 20



Вывести вершины треугольника.
Вот моё решение, но оно неверно при A(3;5),B(3;0),C(0;0)
Код

#define BAD_INPUT_DATA_MESSAGE    "Last input data is bad or incorrect!!!"
#define EXIT_MESSAGE            "Press any key for exit..."

void my_exit(const char* message = NULL)
{
    if(message == NULL) return;
    cout << endl;
    cout << message;
    getch();
    exit(0);
}

void main(void)
{
    //New variables:
    double Ax=0,Bx=0,Cx=0;
    double Ay=0,By=0,Cy=0;

    //get position of point "A":
    cout << "Enter position of point A:" << endl;
    cout << "X: ";
    cin >> Ax;
    cout << "Y: ";
    cin >> Ay;
    //get position of point "B":
    cout << "Enter position of point B:" << endl;
    cout << "X: ";
    cin >> Bx;
    cout << "Y: ";
    cin >> By;
    //get position of point "C":
    cout << "Enter position of point C:" << endl;
    cout << "X: ";
    cin >> Cx;
    cout << "Y: ";
    cin >> Cy;
    if(Ax == Bx && Ay == By) my_exit(BAD_INPUT_DATA_MESSAGE);
    if(Ax == Cx && Ay == Cy) my_exit(BAD_INPUT_DATA_MESSAGE);
    if(Bx == Cx && By == Cy) my_exit(BAD_INPUT_DATA_MESSAGE);
    if((Ax == Bx && Ax == Cx) || (Ay == By && Ay == Cy)) my_exit(BAD_INPUT_DATA_MESSAGE);
    //***********************************

    cout << endl;
    cout << "Points in task order: ";
    if(Ax < Bx && Ax < Cx)
    {
        cout << 'A';
        if(Bx < Cx && By >= Cy) cout << "BC";
        else cout << "CB";
    }
    else
    {
        if(Bx < Ax && Bx < Cx)
        {
            cout << 'B';
            if(Cx < Ax && Cy >= Ay) cout << "CA";
            else cout << "AC";
        }
        else
        {
            cout << 'C';
            if(Ax < Bx && Ay >= By) cout << "AB";
            else cout << "BA";
        }
    }
    //Close programm:
    my_exit(EXIT_MESSAGE);
}


Это сообщение отредактировал(а) En_t_end - 16.9.2006, 06:37
PM MAIL ICQ Skype GTalk Jabber   Вверх
MAKCim
Дата 16.9.2006, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 6
Всего: 207



1. Найти min(x), max(x)
(пусть нашли и min(x) -> A, max(x) -> B)
2. Если Cy>=By => ((Ax,Ay),(Cx,Xy),(Bx,By))
    Если Cy<By    => ((Ax,Ay),(Bx,By),(Cx,Cy))


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
En_t_end
Дата 16.9.2006, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 2
Всего: 20



MAKCim, 
Благодарю
PM MAIL ICQ Skype GTalk Jabber   Вверх
En_t_end
Дата 21.9.2006, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 2
Всего: 20



Вот конкретно часть определения порядка вывода(c изменениями):
Код

    if(Ax < Bx && Ax < Cx)
    {
        cout << 'A';
        //if(Bx < Cx && By >= Cy) cout << "BC";
        if(Bx >= Cx && By > Cy) cout << "BC";
        else cout << "CB";
    }
    else
    {
        if(Bx < Ax && Bx < Cx)
        {
            cout << 'B';
            //if(Cx < Ax && Cy >= Ay) cout << "CA";
            if(Cx >= Ax && Cy > Ay) cout << "CA";
            else cout << "AC";
        }
        else
        {
            cout << 'C';
            //if(Ax < Bx && Ay >= By) cout << "AB";
            if(Ax >= Bx && Ay > By) cout << "AB";
            else cout << "BA";
        }
    }

Решение ошибочно для A(0;0),B(0;1),C(1;0)
MAKCim, and all выручайте, над этой простой задачей бьюсь уже туеву тучу времени. Впрочем у меня так всегда.

Это сообщение отредактировал(а) En_t_end - 21.9.2006, 19:50
PM MAIL ICQ Skype GTalk Jabber   Вверх
MAKCim
Дата 21.9.2006, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 6
Всего: 207



Код

if (Ax < Bx)
{
    if (Ax < Cx)
        cout<<'A';
    else if (Ax > Cx || Ay > Cy) cout<<"CA";
    else cout<<"AC";
}
else if (Ax > Bx)
{
    if (Bx < Cx) 
    {
        cout<<'B';
        if (Ax < Cx)
        {
            if (Ay >= Cy) cout<<"AC";
            else cout<<"CA";
        }
        else if (Ax > Cx)
        {
            if (Cy >= Ay) cout<<"CA";
            else cout<<"AC";
        }
        else if (Ay > Cy) cout<<"AC";
        else cout<<"CA";
    }
    else if (Bx > Cx)
    {
        cout<<'C';
        if (Ax < Bx)
        {
            if (Ay >= By) cout<<"AB";
            else cout<<"BA";
        }
        else if (Ax > Bx)
        {
            if (By >= Ay) cout<<"BA";
            else cout<<"AB";
        }
        else if (Ay > By) cout<<"AB";
        else cout<<"BA";
    }
    else if (By > Cy)
        cout<<"CBA";
    else cout<<"BCA";
}
else if (Cx < Bx)
{
    cout<<'C';
    if (By > Cy) cout<<"BC";
    else cout<<"CB";
}
else if (By > Ay)
    cout<<"ABC";
else cout<<"BAC";


Это сообщение отредактировал(а) MAKCim - 21.9.2006, 22:05


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0691 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.