Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
1 / 1 / 0
Регистрация: 13.10.2012
Сообщений: 83

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

02.10.2013, 03:56. Показов 1598. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Даны произвольные числа a b c.Написать программу,которая проверяла бы,можно ли построить треугольник с такими длинами сторон, и если можно, то определить вид треугольника по соотношению сторон (равносторонний, равнобедренный, разносторонний) и по соотношению углов( остроугольный ,прямоугольный, тупоугольный). По результатам проверки вывести на экран соответствующее сообщение.
#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();}

Что означает данный фрагмент?
m*=m; q=a*a+b*b+c*c-m;
d=(m>=q)+(m>q);
Почему,когда находят q, то сложив квадраты стороны вычитают m?
Что записывают под переменную d?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.10.2013, 03:56
Ответы с готовыми решениями:

Помогите пожалуйста записать на С++ фрагмент программы
помогите пожалуйста записать на С++ фрагмент программы) const s:string='0123456789ABCDEF'; c:array of...

Разъясните пожалуйста
int sd(int n, int d = 1) { if(n == 0) { return 0; } else { return d &lt;= n ? (n % d == 0...

Разъясните пожалуйста (классы)
1. Зачем в следующем коде в 1 строке стоит амперсанд? 2. Что значит RHS и когда его использовать? 3. Зачем стоит звездочка в 6 строке...

2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,691
Записей в блоге: 14
02.10.2013, 12:18
Лучший ответ Сообщение было отмечено саня голубев как решение

Решение

C++
1
2
3
4
//Что означает данный фрагмент?
m*=m; // m=m*m;
q=a*a+b*b+c*c-m; // это понятно..
d=(m>=q)+(m>q); // а это уже не вполне... если m>=q, то d=2; если m>q, то d=1, иначе d=0
0
 Аватар для Extrim88
51 / 51 / 21
Регистрация: 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.10.2013, 12:53
Помогаю со студенческими работами здесь

Разъясните пожалуйста задачу
Вот задача. #include &lt;iostream&gt; using namespace std; const int n=3; struct STRUCT { char fio; int phone; int...

Разъясните пожалуйста некоторые детали...
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #define eof -1 int main() { int c; printf(&quot;Make...

разъясните,пожалуйста, как это сделать?
Дано целое число N (&gt; 0). Найти значение выражения 1.1 – 1.2 + 1.3 – … (N слагаемых, знаки чередуются). Условный оператор не...

Разъясните пожалуйста пару строк кода
Программа 1: #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;cstring&gt; using namespace std; int main() { char...

Разъясните что тут написано, ну пожалуйста
Задали лабу - перевод рисунка с форматом BMP из цветного в ч/б изображение, нашёл структурку, но не могу разобраться что она делает......


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru