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

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

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

Не вычисляется уравнение - C++

11.05.2014, 13:27. Просмотров 199. Ответов 4
Метки нет (Все метки)

В общем так. Дана задача:

Разработать программу, обеспечивающую ввод с клавиатуры 3 целых чисел, которые предположительно определяют длины 3 сторон некоторого треугольника.
После этого программа должна обеспечить определение :
1 могут ли введенные значения являться длинами сторон треугольника;
2 если это треугольник, то является ли он:
- равносторонним, равнобедренным или разносторонним;
- остроугольным (все углы острые), прямоугольным или имеет один тупой угол.
Результат вывести на экран монитора.

Прога пишется в Borland C++

Вот код моей программы:

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
#include <iostream.h>
#include <math.h>
 
int a,b,c;
double A,B,C,Alpha,Beta,Gamma;
 
double main ()
{
cout<< " Ââåäèòå Г·ГЁГ±Г«Г*: ";
cout<<"Г*= "; cin>> a;
cout<< " b= "; cin>> b;
cout<< " c= "; cin>> c;
 
 while (a+b+c == abs(a)+abs(b)+abs(c)&&
          a*b*c!=0 &&
          a+b>c && a+c>b && b+c>a)
 {
  cout<< "Г—ГЁГ±Г«Г* ìîãóò áûòü äëèГ*Г*ìè ñòîðîГ* òðåóãîëüГ*ГЁГЄГ*; \nГ¤Г*Г*Г*ûé òðåóãîëüГ*ГЁГЄ ";
  {
    if (a+b==b+c)
     cout<<"Г°Г*ГўГ*îñòîðîГ*Г*ГЁГ© ";
    else
     {
      if (a==b && a!=c || a==c && a!=b || b==c && b!=a)
        cout<<"Г°Г*ГўГ*îáåäðåГ*Г*ûé ";
      else
        cout<<"Г°Г*Г§Г*îñòîðîГ*Г*ГЁГ© ";
     }
  }
  A=(double) a; B=(double) b; C=(double) c;
  Alpha=acos((pow(A,2)+pow(B,2)-pow(C,2))/(2*A*B));
  Beta=acos((pow(A,2)+pow(C,2)-pow(B,2))/(2*A*C));
  Gamma=acos((pow(B,2)+pow(C,2)-pow(A,2))/(2*B*C));
  {
    if (Alpha==90 || Beta==90 || Gamma==90)
     cout<<" ГЁ ïðÿìîóãîëüГ*ûé";
    else
     {
      if (Alpha>90 || Beta>90 || Gamma>90)
        cout<<"ГЁ òóïîóãîëüГ*ûé";
      else
        cout<<"ГЁ îñòðîóãîëüГ*ûé";
     }
  }
 
 return 0;
 }
 
  cout<<"Г—ГЁГ±Г«Г* Г*ГҐ ìîãóò áûòü äëèГ*Г*ìè ñòîðîГ* òðåóãîëüГ*ГЁГЄГ*.";
 
return 0;
}
Прога не высчитывает уравнения для альфа, бета и гамма. Объясните тугодуму где здесь ошибка и как написать правильно.

P.S. И подскажите, пожалуйста, как заставить её (программу) после одного выполнения заставить очищать экран и начинать цикл заново Enter-ом и закрывать окно Escape-ом
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2014, 13:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не вычисляется уравнение (C++):

Неправильно вычисляется arcctg - C++
string Parser::Colculate(string &amp;str,vector&lt;string&gt; mas, int index) { if (mas == &quot;arcctg&quot;) //арккотангенс { double rez =...

Как вычисляется выражение - C++
Как вычисляется выражение while? char *str1; char *str2; ... while(*str2++ = *str1++); Что является окончанием цикла?

Неверно вычисляется среднее - C++
Написать программу, которая вычисляет среднее арифметическое последовательности дробных чисел, вводимых с клавиатуры. После того, как будет...

Неверно вычисляется выражение - C++
Не до конца сделал программу.Суть в том в &quot;sbichne&quot; выводиться 0 в любом случае.До некоторых изменений всегда выводилось &quot;1&quot;...В чём...

Не вычисляется сумма ряда - C++
// ConsoleApplication1.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &quot;iostream&quot; ...

Как вычисляется выражение a+++b? - C++
Здравствуйте. Как вычисляется выражение a+++b? Как компилятор понимает, что означает +++: ++ + или + ++? Как он разбивает...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
11.05.2014, 13:58 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от NightCrack Посмотреть сообщение
if (a+b==b+c)
Истинность не зависит от b.
C++
1
if (a==b&&b==c)
Зачем в квадрат возводить через pow
C++
1
Alpha=acos((A*A+B*B-C*C)/(2.*A*B));
Цитата Сообщение от NightCrack Посмотреть сообщение
if (Alpha==90 || Beta==90 || Gamma==90)
1. acos возвращает угол в радианах,
2. значение действительных чисел не точное, поэтому проверка на равно бесполезна.

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
if (a*a+b*b==c*c || a*a==b*b++c*c || a*a+c*c==b*b )
     cout<<" и прямоугольный";
    else
     {
      if (Alpha>M_PI/2. || Beta>M_PI/2.  || Gamma>M_PI/2. )
        cout<<"и тупоугольный";
      else
        cout<<"и остроугольный";
     }
0
NightCrack
0 / 0 / 0
Регистрация: 11.05.2014
Сообщений: 7
11.05.2014, 14:08  [ТС] #3
Спасибо. Думаю, при переводе радианов в градусы угол в 90 градусов выведется (хотя я это вскоре проверю).
А по поводу последнего вопроса не подскажете)?

Добавлено через 7 минут
Таки да, работает)
Ну, в смысле, и прога работает, и
C++
1
2
    if (Alpha==M_PI/2. || Beta==M_PI/2. || Gamma==M_PI/2.)
     cout<<" ГЁ ïðÿìîóãîëüГ*ûé";
тоже работает)
0
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
11.05.2014, 14:10 #4
Поскольку a,b,c целые, то для проверки на прямой угол надежнее использовать теорему Пифагора
0
NightCrack
0 / 0 / 0
Регистрация: 11.05.2014
Сообщений: 7
11.05.2014, 14:12  [ТС] #5
Приму к сведению). А по поводу
Цитата Сообщение от NightCrack Посмотреть сообщение
P.S. И подскажите, пожалуйста, как заставить её (программу) после одного выполнения заставить очищать экран и начинать цикл заново Enter-ом и закрывать окно Escape-ом
?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2014, 14:12
Привет! Вот еще темы с ответами:

Неправильно вычисляется логическое выражение - C++
В этом отрывке программы у меня программа не замечает условие,почему? То есть она выводит не для 1-3,100,200,300,700,1000,1426,а выводит...

Прототип функции. Площадь не вычисляется - C++
Стал писать программу на С++ и объявил прототип - инициализируется при вызове функции: #include&lt;iostream&gt; int Area ( int length, int...

Неправильно вычисляется корень квадратный - C++
qrt(x) не работает. pow(x,1/2) дает всегда 1.

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.05.2014, 14:12
Ответ Создать тему
Опции темы

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