Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #include <stdlib.h> // abs(), fabs()
- double strength(double charge, double distance) {
- return 9 * charge / (distance * distance);
- }
- int main(int argc, char **argv) {
- double q1 = 0, q2 = 0;
- double e1, e2, e;
- double r1 = (double)NULL, r2 = (double)NULL, d = (double)NULL;
- double step;
- int dig_num = 0;
- char flag = 0;
- char c;
- if (argc > 1) {
- printf("Usage: %s\n", argv[0]);
- exit(0);
- }
- while (1) {
- printf("Левая граница расстояния: ");
- scanf("%lf", &r1);
- if (r1 == (double)NULL) {
- printf("Неверный ввод.\n");
- for (; getchar() != '\n'; );
- continue;
- }
- break;
- }
- // while (1) {
- // printf("Левая граница расстояния: ");
- // while ((c = getchar()) != '\n') {
- // if (c == '-') {
- // r1 = -1;
- // continue;
- // }
- // if (c >= '0' && c <= '9') {
- // r1 = r1 >= 0 ? r1 * 10 + (double)(c - '0') : r1 * 10 - (double)(c - '0');
- // dig_num++;
- // continue;
- // }
- // else {
- // printf("Неверный ввод.\n");
- // for (; getchar() != '\n'; );
- // break;
- // }
- // }
- // if (r1 < 0) {
- // r1 += pow(10, dig_num);
- // }
- // if (r1 != 0)
- // break;
- // }
- while (1) {
- printf("Расстояние до заряженного тела Q2(r): ");
- scanf("%lf", &d);
- if (d == 0) {
- printf("Неверный ввод.\n");
- for (; getchar() != '\n';);
- continue;
- }
- break;
- }
- // while (1) {
- // printf("Расстояние до заряженного тела Q2(r): ");
- // while ((c = getchar()) != '\n') {
- // if (c == '-') {
- // d = -1;
- // continue;
- // }
- // if (c >= '0' && c <= '9') {
- // d = d >= 0 ? d * 10 + (double)(c - '0') : d * 10 - (double)(c - '0');
- // dig_num++;
- // continue;
- // }
- // else {
- // printf("Неверный ввод.\n");
- // for (; getchar() != '\n'; );
- // break;
- // }
- // }
- // if (d < 0) {
- // d += pow(10, dig_num);
- // }
- // if (d != 0)
- // break;
- // }
- while (1) {
- printf("Правая граница расстояния: ");
- scanf("%lf", &r2);
- if (r2 == 0) {
- printf("Неверный ввод.\n");
- for (; getchar() != '\n';);
- continue;
- }
- break;
- }
- // while (1) {
- // printf("Правая граница расстояния: ");
- // while ((c = getchar()) != '\n') {
- // if (c == '-') {
- // d = -1;
- // continue;
- // }
- // if (c >= '0' && c <= '9') {
- // d = d >= 0 ? d * 10 + (double)(c - '0') : d * 10 - (double)(c - '0');
- // dig_num++;
- // continue;
- // }
- // else {
- // printf("Неверный ввод.\n");
- // for (; getchar() != '\n'; );
- // break;
- // }
- // }
- // if (d < 0) {
- // d += pow(10, dig_num);
- // }
- // if (d != 0)
- // break;
- // }
- if (r2 < r1) {
- printf("Левая граница должна быть меньше, чем правая.\n");
- exit(0);
- }
- while (1) {
- printf("Q1 = ");
- scanf("%lf", &q1);
- if (q1 == 0) {
- printf("Неверный ввод.\n");
- for (; getchar() != '\n';);
- continue;
- }
- break;
- }
- while (1) {
- printf("Q2 = ");
- scanf("%lf", &q2);
- if (q2 == 0) {
- printf("Неверный ввод.\n");
- for (; getchar() != '\n'; );
- continue;
- }
- break;
- }
- while (1) {
- printf("Шаг = ");
- scanf("%lf", &step);
- if (step == 0) {
- printf("Неверный ввод.\n");
- for (; getchar() != '\n'; );
- continue;
- }
- break;
- }
- for (r1; r1 <= r2; r1 += step) {
- e1 = strength(q1, fabs(r1));
- e2 = strength(q2, fabs(r1 - d));
- e = e1 + e2;
- printf("Напряженность первого заряженного тела %.3f на расстоянии %.1f равна: %.3f\n"
- "Напряженность второго заряженного тела %.3f на расстоянии %.1f равна: %.3f\n",
- q1, r1, e1, q2, r1, e2);
- printf("x = %.1f; y = %.3f\n\n", r1, fabs(e));
- }
- getchar()
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement