Нахождение площади и периметра по формулам - C (СИ)
Формулировка задачи:
Добрый день. Написал программу, которая вычисляет площадь и периметр треугольника по 2 сторонам и углу между ними.
Сначала код находит третью сторону (c), затем производит вычисления площади и периметра. Но какие бы я значения не вводил, программа всегда выводит 0.0000..0 в обоих случаях. В чем я ошибся?
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
float a, b, c, perimetr;
double degree1;
printf("Computing with two sides and the angle between them\n");
printf("Enter the value of the two sides and the angle between them\n");
scanf("%f %f %f" ,&a, &b ,°ree1);
double s = a*b*cos(degree1*M_PI/180);
float z = a*a + b*b;
double c = sqrt(z);
perimetr = a + b + c;
if (s>=0) {
printf("S = %f\n" ,&s);
printf("P = %f\n" ,&perimetr);
return 0;
}Решение задачи: «Нахождение площади и периметра по формулам»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
int n;
float x1, x2, x3, y1, y2, y3, a, b, c, perimetr;
double degree, rdegree;
printf("Computing with two sides and the angle between them\n");
printf("Enter the value of the two sides and the angle between them\n");
scanf("%f %f %lf" ,&a, &b ,°ree);
rdegree = degree * (M_PI/180.0); // угол в радианы
double s = 0.5*a*b*sin(rdegree); // находим площадь
double z = (a*a + b*b) - 2.0*a*b*cos(rdegree);
c = sqrt(z); // находим третью сторону
perimetr = a + b + c; // вычисляем периметр
int error;
if (s > 0) {
printf("S = %f\n" ,s);
printf("P = %f\n" ,perimetr);
error = 0;
} else {
printf("The area of the triangle can not be negative\n");
error -1;
}
return error;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек
- Объявление переменных: n, x1, x2, x3, y1, y2, y3, a, b, c, perimetr, degree, rdegree
- Вывод сообщения и запрос на ввод значений a, b и угла между ними
- Преобразование угла из градусов в радианы
- Вычисление площади треугольника по формуле Герона
- Вычисление длины стороны c по формуле Герона
- Вычисление периметра треугольника по формуле a + b + c
- Проверка на положительность площади s
- Вывод значения площади и периметра, если площадь положительна
- Вывод сообщения об ошибке, если площадь отрицательна
- Возврат значения ошибки