Source.c 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. //-Замените все значения констант, используемых в программе с использованием директивы #define
  2. //
  3. //- с использованием директивы #define реализуйте макрос, который возводит число во вторую степень.С помощью данного макроса решите задачу на нахождение длины отрезка по координатам двух его точек.
  4. //
  5. //- С помощью данного макроса и решения предыдущей задачи напишите функцию, которая проверяет, образуют ли треугольник точки, координаты которых ввел пользователь.Если треугольник образуется, найти его периметр и площадь.
  6. //
  7. //- Переработайте предыдущую функцию таким образом, чтобы она использовала директивы #if, #else, #elif, #endif.
  8. #include <stdio.h>
  9. #include <math.h>
  10. #include <locale.h>
  11. #define step(x) x*x
  12. #define perimetr(a, b, c) a+b+c
  13. double vozvod(float x, float y, float x1, float y1)
  14. {
  15. double d;
  16. float a = x1 - x;
  17. float b = y1 - y;
  18. d = step(a) + step(b);
  19. #if(!d)
  20. d = sqrt(d);
  21. return d;
  22. #endif
  23. }
  24. int is_treygolnik(double a, double b, double c)
  25. {
  26. return (a + b > c) && (a + c > b) && (b + c > a);
  27. }
  28. void treygolnik(float x, float x1, float x2, float y, float y1, float y2)
  29. {
  30. double a = vozvod(x, y, x1, y1);
  31. double b = vozvod(x1, y1, x2, y2);
  32. double c = vozvod(x2, y2, x, y);
  33. if (is_treygolnik(a, b, c))
  34. {
  35. double p = (perimetr(a, b, c))/2;
  36. printf("Это треугольник\n");
  37. printf("Периметр треугольника = %f\n", perimetr(a, b, c));
  38. printf("Площадь треугольника = %f", sqrt(p*((p-a)*(p-b)*(p-c))));
  39. }
  40. else
  41. {
  42. printf("Это не треугольник");
  43. }
  44. }
  45. void main()
  46. {
  47. setlocale(LC_ALL, "Russian");
  48. float x;
  49. float x1;
  50. float x2;
  51. float y;
  52. float y1;
  53. float y2;
  54. printf_s("введите координату x точки 1: \n");
  55. scanf_s("%f.2", &x);
  56. printf_s("введите координату y точки 1: \n");
  57. scanf_s("%f.2", &y);
  58. printf_s("введите координату x точки 2: \n");
  59. scanf_s("%f.2", &x1);
  60. printf_s("введите координату y точки 2: \n");
  61. scanf_s("%f.2", &y1);
  62. printf_s("введите координату x точки 3: \n");
  63. scanf_s("%f.2", &x2);
  64. printf_s("введите координату y точки 3: \n");
  65. scanf_s("%f.2", &y2);
  66. treygolnik(x, x1, x2, y, y1, y2);
  67. }