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

Определить теугольник с наибольшим радиусом, вписанной окружности - C++

Восстановить пароль Регистрация
 
Twitosha
1 / 1 / 0
Регистрация: 02.03.2013
Сообщений: 29
17.04.2013, 02:42     Определить теугольник с наибольшим радиусом, вписанной окружности #1
Определить теугольник с наибольшим радиусом, вписанной окружности. Треугольники заданы длинами сторон в массиве: (a[0],a[1],a[2])- длины сторон первого треугольника, (a[3],a[4],a[5])- длины сторон второго треугольника и т.д. Использовать функцию определения радиуса вписанной окружности треугольника.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2013, 02:42     Определить теугольник с наибольшим радиусом, вписанной окружности
Посмотрите здесь:

C++ Треугольник задан величинами своих углов и радиусом вписанной окружности. Найти стороны треугольника.
C++ Вычислить площадь вписанной окружности
C++ Рассчитать радиус окружности, вписанной в треугольник и описанной
C++ Пересечение сторонами треугольника вписанной окружности. Подскажите алгоритм
Ввести сторону квадрата a. Вычислить площадь вписанной окружности C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
17.04.2013, 08:46     Определить теугольник с наибольшим радиусом, вписанной окружности #2
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
#include <iostream>
#include <cmath>
 
float Radius(float a, float b, float c)
{
   float p = a + b + c;
 
   return std::sqrt((p - a) * (p - b) * (p - c) / p);
}
 
int main()
{
   float edges[] = { 3.0, 4.0, 5.0,
                     8.0, 3.0, 8.0,
                     4.0, 4.0, 5.0,
                     3.0, 3.0, 3.0,
                     9.0, 9.0, 1.0 };
 
   size_t nEdges = sizeof(edges) / sizeof(*edges);
 
   size_t maxIndex = 0;
   float maxRadius = Radius(edges[maxIndex], edges[maxIndex + 1], edges[maxIndex + 2]);
 
   for (size_t i = 0; i <= nEdges - 3; i += 3)
   {
      float radius = Radius(edges[i], edges[i + 1], edges[i + 2]);
      std::cout << "a = " << edges[i]     << ", "
                << "b = " << edges[i + 1] << ", "
                << "c = " << edges[i + 2] << ", "
                << "radius = " << radius << std::endl;
 
      if (maxRadius < radius)
      {
         maxIndex = i;
         maxRadius = radius;
      }
   }
 
   std::cout << std::endl
             << "maximal: "
             << "a = " << edges[maxIndex]     << ", "
             << "b = " << edges[maxIndex + 1] << ", "
             << "c = " << edges[maxIndex + 2] << ", "
             << "radius = " << maxRadius << std::endl;
 
   return 0;
}
Определить теугольник с наибольшим радиусом, вписанной окружности

Результат выполнения на codepad.org
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
17.04.2013, 09:59     Определить теугольник с наибольшим радиусом, вписанной окружности #3
anmartex, почему float, а не double? Зачем вычисление в 22 строке, если оно делается в цикле?
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
17.04.2013, 10:25     Определить теугольник с наибольшим радиусом, вписанной окружности #4
Цитата Сообщение от Tulosba Посмотреть сообщение
anmartex, почему float, а не double?
А почему double, а не float? Для демонстрации я думаю достаточно.

Цитата Сообщение от Tulosba Посмотреть сообщение
Зачем вычисление в 22 строке, если оно делается в цикле?
Резонный вопрос, просто цикл ещё обслуживает вывод на экран Не хотелось ещё один цикл организовывать.
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
17.04.2013, 10:39     Определить теугольник с наибольшим радиусом, вписанной окружности #5
Цитата Сообщение от anmartex Посмотреть сообщение
Для демонстрации я думаю достаточно.
Типа на 2 символа меньше набирать?
Цитата Сообщение от anmartex Посмотреть сообщение
Не хотелось ещё один цикл организовывать.
Я о том, что если хотелось установить "начальное" максимальное значение, то цикл надо бы от 1 делать. Но так как радиус не может быть меньше 0, то maxRadius можно было инициализировать нулем.
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
17.04.2013, 10:43     Определить теугольник с наибольшим радиусом, вписанной окружности #6
Цитата Сообщение от Tulosba Посмотреть сообщение
Типа на 2 символа меньше набирать?
На самом деле поставил автоматом.
Цитата Сообщение от Tulosba Посмотреть сообщение
Но так как радиус не может быть меньше 0, то maxRadius можно было инициализировать нулем.
Согласен, чего-то заклинило. Это было бы актуально с минимумом
Yandex
Объявления
17.04.2013, 10:43     Определить теугольник с наибольшим радиусом, вписанной окружности
Ответ Создать тему
Опции темы

Текущее время: 14:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru