Ошибка В Программе. Помогите Найти

Тема в разделе "C/C++/C#", создана пользователем Natalya43, 27 янв 2013.

  1. Natalya43

    Natalya43 New Member

    Регистрация:
    27 янв 2013
    Сообщения:
    4
    Симпатии:
    0
    Добрый вечер! У меня тут возникла проблема. Написала программу( я вообще в этом деле новичок), но она неправильно работает. Помогите пожалуйста разобраться, где у меня ошибка. Заранее благодарю))).
    Вот условие задачи.
    Даны координаты трех точек на плоскости. Если они могут быть вершинами разностороннего остроугольного треугольника, вывести длины сторон в порядке возрастания, вычислить площадь полученного треугольника.
    А вот код моей программы

    #include <iostream>
    #include <cmath>

    using namespace std;

    int main()
    {
    setlocale (LC_ALL, "Russian");
    float x1, x2, x3, y1, y2, y3, s, a, b, c, p;


    cout << "x1 = ";
    cin >> x1;

    cout << "x2 = ";
    cin >> x2;

    cout << "x3 = ";
    cin >> x3;

    cout << "y1 = ";
    cin >> y1;

    cout << "y2 = ";
    cin >> y2;

    cout << "y3 = ";
    cin >> y3;

    a = sqrt(pow((x1 - x2),2) + pow((y1 - y2), 2));
    b = sqrt(pow((x1 - x3),2) + pow((y1 - y3), 2));
    c = sqrt(pow((x3 - x2),2) + pow((y3 - y2), 2));
    if (( a + b > c ) && (a + c > b ) && ( b + c > a ))
    {
    if ((( a != b )&&(b != c) && ( a != c )) && ((( a*a + b*b ) > c*c ) || (( a*a + c*c ) > b*b ) || (( b*b + c*c ) > a*a )))
    {
    p = ( a + b + c )/2;
    s = sqrt( p*( p - a ) * ( p - b ) * ( p - c ));

    if ( (a > b ) && ( a > c ) && ( b > c ))
    cout << c << b << a << "s = "<< s << endl;

    if ( ( a > b ) && ( a > c ) && ( c > b ))
    cout << b << c << a << "s = "<< s << endl;

    if ( ( b > a ) && ( b > c ) && ( a > c ))
    cout << c << a << b << "s = "<< s << endl;

    if ( ( b > a ) && ( b > c ) && ( c > a ))
    cout << a << c << b << "s = "<< s << endl;

    if ( ( c > b ) && ( c > a ) && ( b > a ))
    cout << a << b << c << " s = "<< s << endl;

    if ( ( c > b ) && ( c > a ) && ( a > b ))
    cout << b << c << a << "s = "<< s << endl;
    }
    else cout <<"Этот треугольник не является разносторонним остроугольным";

    }
    else cout << "Заданные точки не могут быть вершинами треугольника ";
    return 0;
    }
     
  2. fuzzyduzzy

    fuzzyduzzy New Member

    Регистрация:
    22 янв 2013
    Сообщения:
    3
    Симпатии:
    0
    Код (Text):
    #include <iostream>
    #include <cmath>

    using namespace std;

    int main()
    {
    setlocale (LC_ALL, "Russian");
    float x1, x2, x3, y1, y2, y3, s, a, b, c, p;

    cout << "x1 = ";
    cin >> x1;

    cout << "x2 = ";
    cin >> x2;

    cout << "x3 = ";
    cin >> x3;

    cout << "y1 = ";
    cin >> y1;

    cout << "y2 = ";
    cin >> y2;

    cout << "y3 = ";
    cin >> y3;

    a = sqrt(pow((x1 - x2),2) + pow((y1 - y2), 2));
    b = sqrt(pow((x1 - x3),2) + pow((y1 - y3), 2));
    c = sqrt(pow((x3 - x2),2) + pow((y3 - y2), 2));
    if (( a + b > c ) && (a + c > b ) && ( b + c > a ))
    {
    if ((( a != b )&&(b != c) && ( a != c )) && ((( a*a + b*b ) > c*c ) || (( a*a + c*c ) > b*b ) || (( b*b + c*c ) > a*a )))
    {
    p = ( a + b + c )/2;
    s = sqrt( p*( p - a ) * ( p - b ) * ( p - c ));

    if ( (a > b ) && ( a > c ) && ( b > c ))
    cout << c << b << a << "s = "<< s << endl;

    else if ( ( a > b ) && ( a > c ) && ( c > b ))
    cout << b << c << a << "s = "<< s << endl;

    else if ( ( b > a ) && ( b > c ) && ( a > c ))
    cout << c << a << b << "s = "<< s << endl;

    else if ( ( b > a ) && ( b > c ) && ( c > a ))
    cout << a << c << b << "s = "<< s << endl;

    else if ( ( c > b ) && ( c > a ) && ( b > a ))
    cout << a << b << c << " s = "<< s << endl;

    else if ( ( c > b ) && ( c > a ) && ( a > b ))
    cout << b << c << a << "s = "<< s << endl;

    }
    else
    cout <<"Этот треугольник не является разносторонним остроугольным";
    }
    else
    cout << "Заданные точки не могут быть вершинами треугольника ";
    return 0;
    }
     
  3. Natalya43

    Natalya43 New Member

    Регистрация:
    27 янв 2013
    Сообщения:
    4
    Симпатии:
    0
    fuzzy, Спасибо, но программа все - равно как-то странно выводит стороны в порядке возрастания, там вообще какие-то непонятные большие числа выводятся
     
  4. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    что конкретно в нем не работает?

    как-то странно ты пытаешься выводить в порядке возрастания.
    Засунть стороны в массив, отсортируй и выводи.
    Ну например так: (остальной код не трогал)
    Код (Text):
    #include <iostream>
    #include <cmath>
    #include <algorithm>

    using namespace std;

    int main()
    {
    setlocale (LC_ALL, "Russian");
    float x1, x2, x3, y1, y2, y3, s, a, b, c, p;


    cout << "x1 = ";
    cin >> x1;

    cout << "x2 = ";
    cin >> x2;

    cout << "x3 = ";
    cin >> x3;

    cout << "y1 = ";
    cin >> y1;

    cout << "y2 = ";
    cin >> y2;

    cout << "y3 = ";
    cin >> y3;

    a = sqrt(pow((x1 - x2),2) + pow((y1 - y2), 2));
    b = sqrt(pow((x1 - x3),2) + pow((y1 - y3), 2));
    c = sqrt(pow((x3 - x2),2) + pow((y3 - y2), 2));
    if (( a + b > c ) && (a + c > b ) && ( b + c > a ))
    {
    if ((( a != b )&&(b != c) && ( a != c )) && ((( a*a + b*b ) > c*c ) || (( a*a + c*c ) > b*b ) || (( b*b + c*c ) > a*a )))
    {
    p = ( a + b + c )/2;
    s = sqrt( p*( p - a ) * ( p - b ) * ( p - c ));

    float tmp[3] = {a, b, c};
    std::sort(&tmp[0], &tmp[0] + 3);
    for (auto t : tmp)
    std::cout << t << " ";

    std::cout << "s: " << s;
    }
    else cout <<"Этот треугольник не является разносторонним остроугольным";

    }
    else cout << "Заданные точки не могут быть вершинами треугольника ";
    return 0;
    }
    ад какой-то, используй массивы и хотя бы такой цикл:
    Код (Text):
    for (int i = 0; i < 3; ++i) {
    std::cout << "x" << i + 1 << ": ";
    std::cin >> x[i];
    std::cout << "y" << i + 1 << ": ";
    std::cin >> y[i];
    }
     
  5. Natalya43

    Natalya43 New Member

    Регистрация:
    27 янв 2013
    Сообщения:
    4
    Симпатии:
    0
    Спасибо))) А без сортировки никак нельзя? Просто я этого еще не изучала, не понятно, как что работает)
     
  6. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    можешь отсортировать массив сама, я думаю ты поймешь как работает сортировка пузырьком, например.
     
  7. Natalya43

    Natalya43 New Member

    Регистрация:
    27 янв 2013
    Сообщения:
    4
    Симпатии:
    0
    Хорошо, попробую, спасибо)))
     
Загрузка...
Похожие Темы - Ошибка Программе Помогите
  1. 203
    Ответов:
    0
    Просмотров:
    1.049
  2. slavon-x86
    Ответов:
    1
    Просмотров:
    2.579
  3. ildareshka
    Ответов:
    4
    Просмотров:
    40
  4. Ruska132
    Ответов:
    1
    Просмотров:
    70
  5. Lamerman
    Ответов:
    0
    Просмотров:
    48

Поделиться этой страницей