fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. int main() {
  5. const double K = 3.0;
  6. const double L = 12.48;
  7. double x, a, b, y, ab;
  8. double denom_b, denom_y;
  9.  
  10. printf("Calculation Results:\n");
  11. printf("============================================================\n");
  12.  
  13. for (int i = 1; i <= 3; i++) {
  14. // CASE (switch) для вибору аргументу X
  15. switch (i) {
  16. case 1: x = 2.005; break;
  17. case 2: x = -0.437; break;
  18. case 3: x = -2.47; break;
  19. default: continue;
  20. }
  21.  
  22. printf("STEP %d | Argument x = %.3f\n", i, x);
  23.  
  24. // 1. Обчислення a та перевірка ділення на 2x
  25. if (x == 0) {
  26. printf(" [!] Error: Division by zero (x=0). Skipping...\n");
  27. printf("------------------------------------------------------------\n");
  28. continue;
  29. }
  30.  
  31. // a = tg[sqrt(K)^(K^(1/3))] - 1/(2x)
  32. a = tan(pow(sqrt(K), pow(K, 1.0/3.0))) - 1.0/(2.0*x);
  33. printf(" Intermediate a = %.6f\n", a);
  34.  
  35. // 2. Обчислення b та перевірка знаменника
  36. denom_b = pow(0.842, 4) * sqrt(8 * K) * cos(4 * x);
  37.  
  38. if (fabs(denom_b) < 1e-12) {
  39. printf(" [!] Error: Division by zero in variable 'b'. Skipping...\n");
  40. printf("------------------------------------------------------------\n");
  41. continue;
  42. }
  43.  
  44. b = (sin(2 * x) * L * pow(5.75, 1.0/3.0)) / denom_b;
  45. printf(" Intermediate b = %.6f\n", b);
  46.  
  47. // 3. Обчислення Y (використання IF для вибору гілки)
  48. ab = a * b;
  49. printf(" Product a*b = %.6f\n", ab);
  50.  
  51. if (ab < 0) {
  52. // Гілка 1: (a - 2b) / (2a + 5b)
  53. denom_y = 2 * a + 5 * b;
  54. if (fabs(denom_y) < 1e-12) {
  55. printf(" [!] Error: Division by zero in variable 'y' (2a+5b=0).\n");
  56. } else {
  57. y = (a - 2 * b) / denom_y;
  58. printf(" RESULT Y = %.6f (Branch: ab < 0)\n", y);
  59. }
  60. } else {
  61. // Гілка 2: sqrt(ab)
  62. // Додаткова перевірка (хоча ab >= 0 за логікою if)
  63. y = sqrt(ab);
  64. printf(" RESULT Y = %.6f (Branch: ab >= 0)\n", y);
  65. }
  66.  
  67. printf("------------------------------------------------------------\n");
  68. }
  69.  
  70. return 0;
  71. }
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
Calculation Results:
============================================================
STEP 1 | Argument x = 2.005
  Intermediate a = -1.599419
  Intermediate b = 41.939162
  Product a*b   = -67.078309
  RESULT Y      = -0.413942 (Branch: ab < 0)
------------------------------------------------------------
STEP 2 | Argument x = -0.437
  Intermediate a = -0.205878
  Intermediate b = 39.502602
  Product a*b   = -8.132720
  RESULT Y      = -0.401880 (Branch: ab < 0)
------------------------------------------------------------
STEP 3 | Argument x = -2.470
  Intermediate a = -1.147614
  Intermediate b = -9.848717
  Product a*b   = 11.302522
  RESULT Y      = 3.361922 (Branch: ab >= 0)
------------------------------------------------------------