Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.58 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h> // abs(), fabs()
  4.  
  5. double strength(double charge, double distance) {
  6. return 9 * charge / (distance * distance);
  7. }
  8.  
  9. int main(int argc, char **argv) {
  10. double q1 = 0, q2 = 0;
  11. double e1, e2, e;
  12. double r1 = (double)NULL, r2 = (double)NULL, d = (double)NULL;
  13. double step;
  14. int dig_num = 0;
  15. char flag = 0;
  16. char c;
  17.  
  18. if (argc > 1) {
  19. printf("Usage: %s\n", argv[0]);
  20. exit(0);
  21. }
  22.  
  23. while (1) {
  24. printf("Левая граница расстояния: ");
  25. scanf("%lf", &r1);
  26. if (r1 == (double)NULL) {
  27. printf("Неверный ввод.\n");
  28. for (; getchar() != '\n'; );
  29. continue;
  30. }
  31. break;
  32. }
  33.  
  34. // while (1) {
  35. // printf("Левая граница расстояния: ");
  36. // while ((c = getchar()) != '\n') {
  37. // if (c == '-') {
  38. // r1 = -1;
  39. // continue;
  40. // }
  41. // if (c >= '0' && c <= '9') {
  42. // r1 = r1 >= 0 ? r1 * 10 + (double)(c - '0') : r1 * 10 - (double)(c - '0');
  43. // dig_num++;
  44. // continue;
  45. // }
  46. // else {
  47. // printf("Неверный ввод.\n");
  48. // for (; getchar() != '\n'; );
  49. // break;
  50. // }
  51.  
  52. // }
  53. // if (r1 < 0) {
  54. // r1 += pow(10, dig_num);
  55. // }
  56. // if (r1 != 0)
  57. // break;
  58. // }
  59.  
  60. while (1) {
  61. printf("Расстояние до заряженного тела Q2(r): ");
  62. scanf("%lf", &d);
  63. if (d == 0) {
  64. printf("Неверный ввод.\n");
  65. for (; getchar() != '\n';);
  66. continue;
  67. }
  68. break;
  69. }
  70.  
  71. // while (1) {
  72. // printf("Расстояние до заряженного тела Q2(r): ");
  73. // while ((c = getchar()) != '\n') {
  74. // if (c == '-') {
  75. // d = -1;
  76. // continue;
  77. // }
  78. // if (c >= '0' && c <= '9') {
  79. // d = d >= 0 ? d * 10 + (double)(c - '0') : d * 10 - (double)(c - '0');
  80. // dig_num++;
  81. // continue;
  82. // }
  83. // else {
  84. // printf("Неверный ввод.\n");
  85. // for (; getchar() != '\n'; );
  86. // break;
  87. // }
  88.  
  89. // }
  90. // if (d < 0) {
  91. // d += pow(10, dig_num);
  92. // }
  93. // if (d != 0)
  94. // break;
  95. // }
  96.  
  97. while (1) {
  98. printf("Правая граница расстояния: ");
  99. scanf("%lf", &r2);
  100. if (r2 == 0) {
  101. printf("Неверный ввод.\n");
  102. for (; getchar() != '\n';);
  103. continue;
  104. }
  105. break;
  106. }
  107.  
  108. // while (1) {
  109. // printf("Правая граница расстояния: ");
  110. // while ((c = getchar()) != '\n') {
  111. // if (c == '-') {
  112. // d = -1;
  113. // continue;
  114. // }
  115. // if (c >= '0' && c <= '9') {
  116. // d = d >= 0 ? d * 10 + (double)(c - '0') : d * 10 - (double)(c - '0');
  117. // dig_num++;
  118. // continue;
  119. // }
  120. // else {
  121. // printf("Неверный ввод.\n");
  122. // for (; getchar() != '\n'; );
  123. // break;
  124. // }
  125.  
  126. // }
  127. // if (d < 0) {
  128. // d += pow(10, dig_num);
  129. // }
  130. // if (d != 0)
  131. // break;
  132. // }
  133.  
  134. if (r2 < r1) {
  135. printf("Левая граница должна быть меньше, чем правая.\n");
  136. exit(0);
  137. }
  138.  
  139. while (1) {
  140. printf("Q1 = ");
  141. scanf("%lf", &q1);
  142. if (q1 == 0) {
  143. printf("Неверный ввод.\n");
  144. for (; getchar() != '\n';);
  145. continue;
  146. }
  147. break;
  148. }
  149.  
  150. while (1) {
  151. printf("Q2 = ");
  152. scanf("%lf", &q2);
  153. if (q2 == 0) {
  154. printf("Неверный ввод.\n");
  155. for (; getchar() != '\n'; );
  156. continue;
  157. }
  158. break;
  159. }
  160.  
  161. while (1) {
  162. printf("Шаг = ");
  163. scanf("%lf", &step);
  164. if (step == 0) {
  165. printf("Неверный ввод.\n");
  166. for (; getchar() != '\n'; );
  167. continue;
  168. }
  169. break;
  170. }
  171.  
  172. for (r1; r1 <= r2; r1 += step) {
  173. e1 = strength(q1, fabs(r1));
  174. e2 = strength(q2, fabs(r1 - d));
  175. e = e1 + e2;
  176. printf("Напряженность первого заряженного тела %.3f на расстоянии %.1f равна: %.3f\n"
  177. "Напряженность второго заряженного тела %.3f на расстоянии %.1f равна: %.3f\n",
  178. q1, r1, e1, q2, r1, e2);
  179. printf("x = %.1f; y = %.3f\n\n", r1, fabs(e));
  180. }
  181.  
  182. getchar()
  183. return 0;
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement