Министерство образования и науки РФ
ГОУВПО «Комсомольский-на-Амуре государственный технический университет»
Кафедра МОП ЭВМ
Лабораторная работа №3
По дисциплине «Компьютерный практикум»
«Задачи на составление функций»
Вариант 20.
Выполнил: Шелестов И.А.
Группа: 4ВС-1
Проверил: Могильников Е.В.
Комсомольск-на-Амуре
2006
Задание.
Составить блок-схему и разработать программу, которая по данным длинам отрезков А, В, С, Е вычисляет площади всех треугольников, составленных из любой тройки этих отрезков (в том случае, если из тройки отрезков можно составить треугольник).
Описание алгоритма.
1. Запрос длины отрезков.
2. Проверка введённых значений. Если значения отрицательные или равны нулю, то программа выдаёт сообщение об ошибке и завершает работу.
3. Для каждого из возможных, имеющих смысл, наборов отрезков проверяется возможность составления треугольника с помощью функции proverka(x,y,z). Проверка осуществляется исходя из правила, что сумма любых двух сторон треугольника должна быть меньше третьей.
4. Если набор из трёх отрезков удовлетворяет условию составления треугольника, то вычисляется его площадь с помощью функции plosch(x,y,z) и результат выводится на экран. Площадь высчитывается по формуле Герона:
, где p – полупериметр, a,b,c – стороны треугольника. Для вычисления полупериметра используется функция poluperim(x,y,z).
5. Если ни один отрезков не удовлетворяет условию составления треугольника, то выводится сообщение «Ни один из наборов отрезков не является треугольником».
|
|
Листинг программы.
#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>
double poluperim(double,double,double);
double plosch(double,double,double);
int proverka(double,double,double);
void main()
{
clrscr();
cout<<"Введите длины отрезков: "<<endl;
double a,b,c,e,k=0;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
cout<<"c=";
cin>>c;
cout<<"e=";
cin>>e;
//проверка введенных значений
if(a<=0||b<=0||c<=0||e<=0)
{
cout<<"Ошибка! Длины сторон заданы не верно!";
getch();
exit(1);
}
//Проверка наборов отрезков на возможность составления //треугольника
//Вывод значения площади треугольников
if(proverka(a,b,c)==1)
cout<<"Площадь треугольника abc равна: "<<plosch(a,b,c)<<endl;
else k++;
if(proverka(a,b,e)==1)
cout<<"Площадь треугольника abe равна: "<<plosch(a,b,e)<<endl;
else k++;
if(proverka(e,b,c)==1)
cout<<"Площадь треугольника ebc равна: "<<plosch(e,b,c)<<endl;
else k++;
if(proverka(a,e,c)==1)
cout<<"Площадь треугольника aec равна: "<<plosch(a,e,c)<<endl;
else k++;
//Если ни один набор не является треугольником
if(k==4)
cout<<"Ни один из наборов отрезков не является треугольником";
getch();
}
//Функция вычисления полупериметра
double poluperim(double x,double y,double z)
{
double p;
p=(x+y+z)/2;
return p;
}
//Функция вычисления площади по формуле Гирона
double plosch(double x, double y, double z)
{
double s,pp;
pp=poluperim(x,y,z);
s=sqrt(pp*(pp-x)*(pp-y)*(pp-z));
return s;
}
//Функция проверки набора отрезков на возможность составления треугольников
int proverka(double x, double y, double z)
{
if(((x+y)>z)&&((x+z)>y)&&((y+z)>x)) return 1;
else return 0;
}
Экранные формы.
Список литературы.
Литература не использовалась.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.