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

Задача на нахождение площади треугольника - C++

Восстановить пароль Регистрация
 
Anwer
 Аватар для Anwer
0 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 49
25.01.2014, 22:11     Задача на нахождение площади треугольника #1
Условие: Даны действительные числа a, b, c, d. Найти площадь шестиугольника, изображенного на
рис. 4.1. Определить функцию вычисления площади треугольника по трем его
сторонами, заданными действительными числами. Если эти числа не позволяют по-
строить треугольник, то результатом работы функции должно быть значение -1. Рисунок
Проблема: Как ограничить пример:
  • Cделать ввод сторон которые будут равны только положительным числам? (Не допустить ввод отрицательных a, b, c, d) Т.к. стороны математически не могут быть равны отрицательным значениям.
  • Cкомпилировать программу (ввести заранее не верные значения), и если посмотреть то один из треугольников будет равен -1, и площадь шестиугольника дальше продолжает считаться. Вопрос, как сделать если несколько(один) из треугольников будет равнен -1, то вывести к примеру надпись "Нельзя посчитать площадь треугольника". А то вместо этого оно продолжает считать площадь которая уже заранее не верна. Как говорится сделать защиту для дурака.
Решение:
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
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace std;
 
float square(float a, float b, float c) // площадь треугольника
{
    float p;
    if (a + b < c || a + c < b || b + c < a) // проверка на существование треугольника
        return -1;
    p = (a + b + c) / 2.;
    return sqrt (p * (p - a) * (p - b) * (p - c)); // формула Герона
 
}
int main ()
{
       setlocale(0, "rus");
       float line1, line2, line3, line4; // стороны 
       line1 = 1.0;
       line2 = 1.8;
       line3 = 1.4;
       line4 = 1.2;
       float a, b, c, d;
       cout << "Введите сторону а: ";
       cin >> a;
       cout << "Введите сторону b: ";
       cin >> b;
       cout << "Введите сторону c: ";
       cin >> c;
       cout << "Введите сторону d: ";
       cin >> d;
cout << "Площадь треугольника № 1 (а, 1.0, 1.8): " << square(a, line1, line2) << endl;
cout << "Площадь треугольника № 2 (d, 1.8, 1.4): " << square(d, line2, line3) << endl;
cout << "Площадь треугольника № 3 (c, 1.4, 1.2): " << square(c, line3, line4) << endl;
cout << "Площадь треугольника № 4 (a, b, 1.2): " << square(a, b, line4) << endl;
int s;
s = square(a, line1, line2) + square(d, line2, line3) + square(c, line3, line4) + square(a, b, line4);
cout << "Площадь шестиугольника: " << s << endl;
system ("pause");
return 0;
}
P.S. Если видите недочеты в коде, говорите обязательно, т.к. ещё только учусь, и вникаю в функции да и в с++ в целом.
P.S. 2. Как прервать работу программы в MS VS 2010? (завершить процесс)

Добавлено через 1 час 0 минут
Решил.

Добавлено через 1 минуту
Первая проблема решена.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2014, 22:11     Задача на нахождение площади треугольника
Посмотрите здесь:

C++ Вычисление площади равностороннего треугольника
Ошибка в подсчете площади треугольника C++
Нахождение площади через координаты треугольника C++
расчет площади треугольника C++
C++ Анализ треугольника и вычисление его площади
C++ Задача о площади треугольника
Вычисление площади треугольника по координатам x,y C++
Нахождение площади параллелограмма, треугольника и объема параллелепипеда, тетраэдра по координатам вершин C++

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

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

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