Нахождение площади и периметра по формулам - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день. Написал программу, которая вычисляет площадь и периметр треугольника по 2 сторонам и углу между ними. Сначала код находит третью сторону (c), затем производит вычисления площади и периметра. Но какие бы я значения не вводил, программа всегда выводит 0.0000..0 в обоих случаях. В чем я ошибся?
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. int main(void)
  5. {
  6. float a, b, c, perimetr;
  7. double degree1;
  8. printf("Computing with two sides and the angle between them\n");
  9. printf("Enter the value of the two sides and the angle between them\n");
  10. scanf("%f %f %f" ,&a, &b ,&degree1);
  11. double s = a*b*cos(degree1*M_PI/180);
  12. float z = a*a + b*b;
  13. double c = sqrt(z);
  14. perimetr = a + b + c;
  15. if (s>=0) {
  16. printf("S = %f\n" ,&s);
  17. printf("P = %f\n" ,&perimetr);
  18. return 0;
  19. }

Решение задачи: «Нахождение площади и периметра по формулам»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. int main(void)
  6. {
  7.     int n;
  8.     float x1, x2, x3, y1, y2, y3, a, b, c, perimetr;
  9.     double degree, rdegree;
  10.     printf("Computing with two sides and the angle between them\n");
  11.     printf("Enter the value of the two sides and the angle between them\n");
  12.     scanf("%f %f %lf" ,&a, &b ree);
  13.         rdegree = degree * (M_PI/180.0);        // угол в радианы
  14.         double s = 0.5*a*b*sin(rdegree);        // находим площадь
  15.         double z = (a*a + b*b) - 2.0*a*b*cos(rdegree);
  16.         c = sqrt(z);                                // находим третью сторону
  17.         perimetr = a + b + c;                   // вычисляем периметр
  18.     int error;
  19.     if (s > 0) {
  20.         printf("S = %f\n" ,s);
  21.         printf("P = %f\n" ,perimetr);
  22.         error = 0;
  23.     } else {
  24.         printf("The area of the triangle can not be negative\n");
  25.         error -1;
  26.     }
  27.     return error;
  28. }

Объяснение кода листинга программы

  1. Подключение необходимых библиотек
  2. Объявление переменных: n, x1, x2, x3, y1, y2, y3, a, b, c, perimetr, degree, rdegree
  3. Вывод сообщения и запрос на ввод значений a, b и угла между ними
  4. Преобразование угла из градусов в радианы
  5. Вычисление площади треугольника по формуле Герона
  6. Вычисление длины стороны c по формуле Герона
  7. Вычисление периметра треугольника по формуле a + b + c
  8. Проверка на положительность площади s
  9. Вывод значения площади и периметра, если площадь положительна
  10. Вывод сообщения об ошибке, если площадь отрицательна
  11. Возврат значения ошибки

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы