Функция: вычислить периметр и площадь треугольника с вещественными сторонами - 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;
}

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

  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
Похожие ответы