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

Разъясните пожалуйста фрагмент программы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не могу разобраться с enum http://www.cyberforum.ru/cpp-beginners/thread966871.html
Не могу понять как сделать вывод на экран. Есть задачка: Написать программу, которая предлагает пользователю ввести порядковый номер карты из колоды и выводит в консоль масть и достоинство карты....
C++ Regex в С++ Здравствуйте! Я хочу найти все вхождения подстроки типа 1+1 в строку. std::string str = "0011011000001"; std::regex rx ("1+1"); std::smatch res; std::regex_search(str, res, rx); for... http://www.cyberforum.ru/cpp-beginners/thread966869.html
C++ Ошибка в книге или я что то не понимаю ?
Задача по наследованию: Написать класс "Служащие" которые получают только процент от продаж и "Служащие" которые получают % и мин. З\п. Я пока написал 1 базовый класс и столкнулся с проблемой. ...
История, нужны идеи без религии C++
Расскажу свою историю, может я и не прав, но так было у меня. Первое GUI с которого начал, это Qt, все примерчики не плохо пишутся, довольно интересно, с графикой все просто. Но как только нужно что...
C++ Patient 67% http://www.cyberforum.ru/cpp-beginners/thread966841.html
Извините форумчане, за то что обращаюсь к вам. Мне действительно нужна помощь доделать проект, а именно сортировку. УСЛОВИЕ: Patient: Фамилия, Имя, Отчество, Адрес, Номер медицинской карты,...
C++ MOSES Подскажите где скачать исходники программы MOSES: средство для статистического перевода текстов? http://suse.me/soft/moses/all/ подробнее

Показать сообщение отдельно
Extrim88
50 / 50 / 11
Регистрация: 08.02.2013
Сообщений: 189
02.10.2013, 12:53
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h" 
#include<iostream> 
using namespace std; 
int main(){ 
double a,b,c,m,q; int d; 
cout<<"3 numbers: "; cin>>a>>b>>c; 
m=a>b?a:b; m=m>c?m:c; 
if(2*m>=a+b+c)cout<<"impossible\n"; 
else{ 
m*=m; q=a*a+b*b+c*c-m; 
d=(m>=q)+(m>q); 
switch(d){ 
case 2: cout<<"obtuze\n"; break; 
case 1: cout<<"right\n"; break; 
case 0: cout<<"acute\n";}} 
cin.get(); cin.get();}
Добавлено через 14 минут
В строке 7 определяется большая сторона треугольника. Есть такая теорема в геометрии, что в любом треугольнике, длина каждой стороны меньше суммы двух других. В строке 8 делается такая проверка, если большая сторона по длине >= сумме двух оставшихся сторон, то треугольник построить нельзя, и выводится соответствующее сообщение на экран.
Иначе соответственно находится квадрат большей стороны, и результат присваивается переменной m.
Переменной q присваивается сумма квадратов всех сторон минус квадрат большей стороны, т.е. в итоге переменная q будет содержать сумму квадратов 2 меньших сторон.

Далее в строке 11, переменной d присваивается результат, зависящий от значения логических выражений:
d равно 2, если квадрат большей стороны больше суммы квадратов двух других сторон, m > q;
d равно 1, если квадрат большей стороны равен сумме квадратов двух других сторон, m == q;
d равно 0, если квадрат большей стороны меньше суммы квадратов двух других сторон, m < q;

Тут нужно опять вспомнить геометрию, а именно теорему косинусов, текст ее приводить не буду, собственно зачем сравниваются квадраты сторон.

В строке 12 в оператор switch передается значение переменной d, ну здесь понятно, если d == 1, тогда сумма квадратов 2 сторон = квадрату большей стороны, т.е. теорема косинусов превращается в теорему Пифагора, т.е. треугольник прямоугольный, 2 остальных случая вытекают опять же из теоремы косинусов.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru