Функция: вычислить периметр и площадь треугольника с вещественными сторонами - C (СИ)
Формулировка задачи:
#include <stdio.h>
#include <math.h>
int trey(float a,float b,float c,int *p,int *s);
int main(void)
{
float a,b,c,p,s;
int t;
printf("\nvvedite a , b , c \n");
scanf("%f",&a);
scanf("%f",&b);
scanf("%f",&c);
t=trey(a,b,c,&p,&s);
trey(a,b,c,&p,&s);
if(t==1) printf("vveli otrisatelnyy storony");
if(t==2) {printf("\ntriangle virozdenii\n");printf("\nPerimetr=%f, Ploshad=%f",p,s);}
if(t==3) printf("\ntriangle ne syshestvyet\n");
if(t==0) printf("\nPerimetr=%f, Ploshadi=%f",p,s);
return 0;
}
int trey(float a,float b,float c,int *p,int *s)
{
float per;
if((a<0)||(b<0)||(c<0)) return 1;
if((a+b==c)||(a+c==b)||(b+c==a))
{*p=a+b+c; *s=0; return 2;}
if((a+b<c)||(a+c<b)||(b+c<a)) return 3;
per=(a+b+c)/2;
*s = sqrt(per*(per-a)*(per-b)*(per-c));
*p = a+b+c;
return 0;
}Решение задачи: «Функция: вычислить периметр и площадь треугольника с вещественными сторонами»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
int trey(float a,float b,float c,/*исправил*/float *p,/*исправил*/float *s);
int main(void)
{
float a,b,c,p,s;
int t;
printf("\nvvedite a , b , c \n");
scanf(" %f",&a); /*добавил пробел*/
scanf(" %f",&b); /*добавил пробел*/
scanf(" %f",&c); /*добавил пробел*/
t=trey(a,b,c,&p,&s);
/*Убрал*/
if(t==1) printf("vveli otrisatelnyy storony");
else if(t==2)
{
printf("\ntriangle virozdenii\n");
printf("\nPerimetr=%f, Ploshad=%f",p,s);
}
else if(t==3) printf("\ntriangle ne syshestvyet\n");
else if(t==0) printf("\nPerimetr=%f, Ploshadi=%f",p,s);
return 0;
}
int trey(float a,float b,float c,/*исправил*/float *p,/*исправил*/float *s)
{
float per;
if((a<0)||(b<0)||(c<0)) return 1;
if((a+b==c)||(a+c==b)||(b+c==a))
{*p=a+b+c; *s=0; return 2;}
if((a+b<c)||(a+c<b)||(b+c<a)) return 3;
per=(a+b+c)/2;
*s = sqrt(per*(per-a)*(per-b)*(per-c));
*p = a+b+c;
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с вводом/выводом и математическими функциями
- Определяем функцию trey, которая принимает в качестве аргументов значения сторон треугольника и возвращает код результата (1,2,3)
- В функции main считываем значения сторон треугольника с помощью функции scanf
- Вызываем функцию trey и сохраняем ее результат в переменной t
- Выводим соответствующее сообщение в зависимости от значения переменной t
- В функции trey проверяем, являются ли стороны треугольника неотрицательными числами
- Если условие в функции trey не выполняется, то возвращаем 1
- Если условие в функции trey выполняется, то присваиваем значения периметра и площади треугольника соответствующим переменным и возвращаем 2
- Если условие в функции trey не выполняется, то возвращаем 3
- Вычисляем периметр треугольника и присваиваем его значение переменной per
- Вычисляем площадь треугольника и присваиваем ее значение переменной s
- Присваиваем значения периметра и площади треугольника соответствующим переменным в функции main
- Возвращаем 0 из функции main, что означает успешный конец работы программы
- Включаем стандартную библиотеку для работы с математическими функциями
- Заголовочный файл math.h включает в себя определение функции sqrt, которая вычисляет квадратный корень из числа
- Все переменные, которые используются в коде, объявлены как типа float