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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Skillet102
1 / 1 / 0
Регистрация: 17.10.2012
Сообщений: 88
#1

прога для определения типа треугольника работает почему-то неверно - C++

17.10.2012, 21:05. Просмотров 289. Ответов 0
Метки нет (Все метки)

прога для определения типа треугольника
работает почему-то неверно
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
// laba2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include"math.h"
#include<iostream>
#define _USE_MATH_DEFINES
# define M_PI 3.14159265358979323846
int main()
{
    double x1,x2,x3,y1,y2,y3,a1,b1,c1,a,b,c,r1,r2,r3,r4,r5;
    double bp,bp1,bp2,br,bi,bi1,bi2,L,L1,L2,L3,L4,L5,p;
    setlocale(LC_ALL, "Russian");
    while(1)
{
    printf("\nВведите координаты треугольника:\n");
    printf("\nВведите x1:");
    scanf_s("%f",& x1);
    printf("\nВведите y1:");
    scanf_s("%f",& y1);
    printf("\nВведите x2:");
    scanf_s("%f", & x2);
    printf("\nВведите y2:");
    scanf_s("%f",& y2);
    printf("\nВведите x3:");
    scanf_s("%f",& x3);
    printf("\nВведите y3:");
    scanf_s("%f",& y3);
    a=sqrt(pow((x3-x2),2)+pow((y3-y2),2));
    b=sqrt(pow((x2-x1),2)+pow((y2-y1),2));
    c=sqrt(pow((x3-x1),2)+pow((y3-y1),2));
    a1=((acos((pow(b,2)+pow(c,2)-pow(a,2))/(2*b*c)))*(180/M_PI));
    b1=((acos((pow(a,2)+pow(c,2)-pow(b,2))/(2*a*c)))*(180/M_PI));
    c1=((acos((pow(a,2)+pow(b,2)-pow(c,2))/(2*a*b)))*(180/M_PI));
    printf("%f %f %f\n%f %f %f",a1,b1,c1,a,b,c);
if((((a==0)&&(c==0))||((a==0)&&(b==0)))||((b==0)&&(c==0))||(((a1==180)||(b1==180)||(c1==180)))||((a1==0)||(b1==0)||(c1==0)))//условие проверки на прямую и точку
{
    printf("\nКоординаты заданы не верно!\n");
}
else
    {
if(((a=b=c)&&(c!=0)&&((a1<90)&&(b1<90)&&(c1<90))))
    {
        r1=((pow(3,1.0/2)/6))*a;
        br=((pow(3,1.0/2))/2)*a;
        printf("\nТреугольник:\nравносторонний\nТреугольник:\nостроугольный\n");
        printf("\n   Длины сторон:\n\n а=%f,\n б=%f,\n с=%f",a,b,c);
        printf("\n   Радиус вписанного угла:\n   радиус=%f",r1);
        printf("\n   Длины биссектрис:");
        printf("\n   Длина биссектрисы, делящей угол между сторонами a и b=%f",br);
        printf("\n   Длина биссектрисы, делящей угол между сторонами b и c=%f",br);
        printf("\n   Длина биссектрисы, делящей угол между сторонами a и c=%f",br);
    }
else
    {
if((a==b)||(a==c)||(b==c))
        {
            p=(a+b+c)/2;
            r3=(sqrt((p-a)*(p-b)*(p-c))/p);
            bi=sqrt(pow(a,2)-(pow(b,2)/4));
            bi1=sqrt(pow(a,2)-(pow(b,2)/6));
            bi2=sqrt(pow(a,2)-(pow(b,2)/8));
            printf("\nТреугольник:\nравнобедренный\n");
            if(((a1==90)||(b1==90)||(c1==90))&&((a*a+b*b==c*c)||(a*a+c*c==b*b)||(c*c+b*b==a*a))||((a1>89)||(b1>89)||(c1>89)))
                {
                    printf("\nТреугольник:\nпрямоугольный\n");
                }
            if((a1<89)&&(b1<89)&&(c1<89))
                {
                    printf("\nТреугольник:\nостроугольный\n");
                }
            printf("\n   Длины сторон:");
            printf("\n а=%f,\n б=%f,\n с=%f",a,b,c);
            printf("\n   Радиус вписанного угла:\n   радиус=%f",r3);
            printf("\n   Длины биссектрис:");
            printf("\n   Длина биссектрисы, делящей угол между сторонами a и b=%f",bi);
            printf("\n   Длина биссектрисы, делящей угол между сторонами b и c=%f",bi1);
            printf("\n   Длина биссектрисы, делящей угол между сторонами a и c=%f",bi2);
        }
else
        {   
if((a1<89)&&(b1<89)&&(c1<89))
    {
            p=(a+b+c)/2;
            r4=sqrt((p-a)*(p-a)*(p-a))/p;
            L3=(sqrt(a*b*(a+b+c)*(a+b-c)))/(a+b);
            L4=(sqrt(a*b*(a+b+c)*(a+b+c)))/(a+b);
            L5=(sqrt(a*b*(a+b+c)*(a+c-b)))/(a+b);
            printf("\nТреугольник:\nостроугольный\n");
                    if((a=b=c!=0))
                        {
                            printf("\nТреугольник:\nравносторонний\n");
                        }
                    if((a==b)||(a==c)||(b==c))
                        {
                            printf("\nТреугольник:\nравнобедренный\n");
                        }
                    printf("\n   Длины сторон:");
                    printf("\n а=%f,\n б=%f,\n с=%f",a,b,c);
                    printf("\n   Радиус вписанного угла:\n   радиус=%f",r4);
                    printf("\n   Длины биссектрис:\n");
                    printf("\n\tДлина биссектрисы, делящей угол между сторонами a и b=%f",L3);
                    printf("\n\tДлина биссектрисы, делящей угол между сторонами b и c=%f",L4);
                    printf("\n\tДлина биссектрисы, делящей угол между сторонами a и c=%f",L5);
    }
else
        {
if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(c*c+b*b==a*a))
            {
                bp=sqrt(a*b*(a+b+c)*(a+b-c))/(a+b);//находим длины биссектрис
                bp1=sqrt(b*c*(b+c+a)*(b+c-a))/(b+c);
                bp2=sqrt(a*c*(a+c+b)*(a+c-b))/(a+c);
                r2=(a+b-c)/2.0;
                printf("\nТреугольник:\nпрямоугольный\n");
                if((a==b)||(a==c)||(b==c))
                    {
                        printf("\nТреугольник:\nравнобедренный\n");
                    }
                printf("\n   Длины сторон:\n\n а=%f,\n б=%f,\n с=%f",a,b,c);
            printf("\n   Радиус вписанного угла:\n   радиус=%f",r2);
            printf("\n   Длины биссектрис:");
            printf("\n   Длина биссектрисы, делящей угол между сторонами a и b=%f",bp);
            printf("\n   Длина биссектрисы, делящей угол между сторонами b и c=%f",bp1);
            printf("\n   Длина биссектрисы, делящей угол между сторонами a и c=%f",bp2);
            }
else
        {
if(((a1>90)||(b1>90)||(c1>90)))
            {
                p=(a+b+c)/2;
            r5=sqrt((p-a)*(p-a)*(p-a))/p;
            L=(sqrt(a*b*(a+b+c)*(a+b-c)))/(a+b);
            L1=(sqrt(a*b*(a+b+c)*(a+b+c)))/(a+b);
            L2=(sqrt(a*b*(a+b+c)*(a+c-b)))/(a+b);
            printf("\nТреугольник:\nтупоугольный\n%f %f %f",a1,b1,c1);
                if((a==b)||(a==c)||(b==c))
                    {
                        printf("\nТреугольник:\nравнобедренный\n");
                    }
                printf("\n   Длины сторон:");
                    printf("\n а=%f,\n б=%f,\n с=%f",a,b,c);
                    printf("\n   Радиус вписанного угла:\n   радиус=%f",r5);
                    printf("\n   Длины биссектрис:");
                    printf("\n   Длина биссектрисы, делящей угол между сторонами a и b=%f",L);
                    printf("\n   Длина биссектрисы, делящей угол между сторонами b и c=%f",L1);
                    printf("\n   Длина биссектрисы, делящей угол между сторонами a и c=%f",L2);
                
            }
         }
      }
    }
  }
 }
}
 getchar();
 getchar();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2012, 21:05     прога для определения типа треугольника работает почему-то неверно
Посмотрите здесь:

Составить программу для определения типа треугольника - C++

почему не работает прога? - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; void mean (const int, int); void median (const int, int); void...

вот прога почему то не работает - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main (){ string str,slovo; int s=0; char m=0; ...

Не могу понять почему не работает прога(структуры) - C++
Вот стрепал код. структура содержит результаты сессии( как раз актуально), надо ввести данные в структуру, фамилии студентов и оценки по...

Простая прога на использование конструкторов и деструкторов в с++ не работает ( не пойму почему ( - C++
Вот и дошла я до конструкторов/деструкторов. Но возникла проблема . Первая простая прога- и не работает . Нужно , чтобы просто сначала...

В чем причина ошибки компиляции в программе для определения площади треугольника? - C++
Вобщем, пишу программу на DevC++, которая по 3 точкам определяет площадь треугольника. Использую векторное произведение. При компиляции...

Создать шаблонный класс для определения нормы элемента заданного типа - C++
Нужно создать шаблонный класс для определения нормы элемента заданного ти-пу. Для комплексных чисел норма определяется как модуль...

прога определения кол-ва повторений букв и их сочетаний - C++
Составить программу реализующую алгоритмы определения частоты повторения букв и их сочетаний. Результат отображать графически. Может...

Почему неверно писать #include <iostream.h>? - C++
Добрый вечер. Очередной вопрос от чайника))) Вопрос такой. Почему надо писать #include &lt;iostream&gt;, а не #include &lt;iostream.h&gt;? Для...

Почему условный оператор даже, если условие неверно, выдает истину? - C++
void change() { int tmp = 0; do { tmp = 0; cout &lt;&lt; &quot;Napishite Nazvanie, Regisera filma&quot; &lt;&lt; endl; char chName;...

Почему не работает цикл while для заполнения и do while для вывода массива? - C++
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #include &lt;conio.h&gt; #include...

Программа написана, но работает неверно - C++
Программа написана, но работает неверно. Ввести символьную строку и заменить все буквы &quot;а&quot; на буквы &quot;b&quot; и наоборот, как заглавные, так и...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru