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

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

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

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

25.01.2014, 22:11. Просмотров 495. Ответов 0
Метки нет (Все метки)

Условие: Даны действительные числа 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++
C++ Анализ треугольника и вычисление его площади
C++ Задача о площади треугольника
Вычисление площади треугольника по координатам x,y C++
Нахождение площади параллелограмма, треугольника и объема параллелепипеда, тетраэдра по координатам вершин C++
Нахождение площади треугольника через координаты его вершин C++
Функция вычисления площади треугольника C++

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

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

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