Функция: вычислить периметр и площадь треугольника с вещественными сторонами - C (СИ)

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

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

Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3. int trey(float a,float b,float c,int *p,int *s);
  4. int main(void)
  5. {
  6. float a,b,c,p,s;
  7. int t;
  8. printf("\nvvedite a , b , c \n");
  9. scanf("%f",&a);
  10. scanf("%f",&b);
  11. scanf("%f",&c);
  12. t=trey(a,b,c,&p,&s);
  13. trey(a,b,c,&p,&s);
  14. if(t==1) printf("vveli otrisatelnyy storony");
  15. if(t==2) {printf("\ntriangle virozdenii\n");printf("\nPerimetr=%f, Ploshad=%f",p,s);}
  16. if(t==3) printf("\ntriangle ne syshestvyet\n");
  17. if(t==0) printf("\nPerimetr=%f, Ploshadi=%f",p,s);
  18. return 0;
  19. }
  20. int trey(float a,float b,float c,int *p,int *s)
  21. {
  22. float per;
  23. if((a<0)||(b<0)||(c<0)) return 1;
  24. if((a+b==c)||(a+c==b)||(b+c==a))
  25. {*p=a+b+c; *s=0; return 2;}
  26. if((a+b<c)||(a+c<b)||(b+c<a)) return 3;
  27. per=(a+b+c)/2;
  28. *s = sqrt(per*(per-a)*(per-b)*(per-c));
  29. *p = a+b+c;
  30. return 0;
  31. }
Здравствуйте , у меня такая проблема : надо написать функцию , которая считает периметр и площадь треугольника с вещественными сторонами, а также выводит сообщения о частных случаях или треугольник не существует , если не выполняется неравенство треугольника или введена отрицательная сторона функцию вроде написал верно , но после передачи в нее значений сторон , она их почемуто зануляет и соответственно зануляются значения площади и периметра, подскажите пожалуйста , что не так ??????????????????????

Решение задачи: «Функция: вычислить периметр и площадь треугольника с вещественными сторонами»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. int trey(float a,float b,float c,/*исправил*/float *p,/*исправил*/float *s);
  5.  
  6. int main(void)
  7. {
  8.     float a,b,c,p,s;
  9.     int t;
  10.     printf("\nvvedite a , b , c   \n");
  11.     scanf(" %f",&a); /*добавил пробел*/
  12.     scanf(" %f",&b); /*добавил пробел*/
  13.     scanf(" %f",&c); /*добавил пробел*/
  14.     t=trey(a,b,c,&p,&s);
  15.     /*Убрал*/
  16.     if(t==1) printf("vveli otrisatelnyy storony");
  17.     else if(t==2)
  18.         {
  19.         printf("\ntriangle virozdenii\n");
  20.         printf("\nPerimetr=%f, Ploshad=%f",p,s);
  21.         }
  22.     else if(t==3) printf("\ntriangle ne syshestvyet\n");
  23.     else if(t==0) printf("\nPerimetr=%f, Ploshadi=%f",p,s);
  24.     return 0;
  25. }
  26.  
  27. int trey(float a,float b,float c,/*исправил*/float *p,/*исправил*/float *s)
  28. {
  29.     float per;
  30.     if((a<0)||(b<0)||(c<0))          return 1;
  31.     if((a+b==c)||(a+c==b)||(b+c==a))
  32.     {*p=a+b+c; *s=0;                 return 2;}
  33.     if((a+b<c)||(a+c<b)||(b+c<a))    return 3;
  34.     per=(a+b+c)/2;
  35.     *s = sqrt(per*(per-a)*(per-b)*(per-c));
  36.     *p = a+b+c;
  37.     return 0;
  38. }

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

  1. Включаем необходимые заголовочные файлы для работы с вводом/выводом и математическими функциями
  2. Определяем функцию trey, которая принимает в качестве аргументов значения сторон треугольника и возвращает код результата (1,2,3)
  3. В функции main считываем значения сторон треугольника с помощью функции scanf
  4. Вызываем функцию trey и сохраняем ее результат в переменной t
  5. Выводим соответствующее сообщение в зависимости от значения переменной t
  6. В функции trey проверяем, являются ли стороны треугольника неотрицательными числами
  7. Если условие в функции trey не выполняется, то возвращаем 1
  8. Если условие в функции trey выполняется, то присваиваем значения периметра и площади треугольника соответствующим переменным и возвращаем 2
  9. Если условие в функции trey не выполняется, то возвращаем 3
  10. Вычисляем периметр треугольника и присваиваем его значение переменной per
  11. Вычисляем площадь треугольника и присваиваем ее значение переменной s
  12. Присваиваем значения периметра и площади треугольника соответствующим переменным в функции main
  13. Возвращаем 0 из функции main, что означает успешный конец работы программы
  14. Включаем стандартную библиотеку для работы с математическими функциями
  15. Заголовочный файл math.h включает в себя определение функции sqrt, которая вычисляет квадратный корень из числа
  16. Все переменные, которые используются в коде, объявлены как типа float

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


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

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

15   голосов , оценка 3.867 из 5

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

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

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