Я написал небольшой кусок кода для вычисления квадратичных уравнений, но если дискриминант отрицательный, я хотел, чтобы он написал, что для этого квадратичного уравнения нет реальных численных значений. Чтобы это произошло, мне пришлось вызвать функцию с четвертым параметром 0, который, я думаю, я не знаю, почему, было бы плохой практикой программирования? Это так, или я просто слишком разборчив с моим кодом? Спасибо. (Причина, по которой я спрашиваю об этом, заключается в том, что я не хочу забирать некоторые вредные привычки на ранней стадии моей карьеры программирования). Вот код.C программирование хорошая практика или нет?
#include <stdio.h>
#include <math.h>
#include <string.h>
double quadratic_equation(double a, double b, double c, double d);
int main(void)
{
char command[20];
int i;
printf("Enter your command: ");
fgets(command, 20, stdin);
for (i = 0; i < 20; i++) {
if (command[i] == '\n') {
command[i] = '\0';
break;
}
}
if (strcmp(command, "quadratic equation") == 0) {
double a, b, c, x;
printf("Enter A: ");
scanf("%lf", &a);
printf("Enter B: ");
scanf("%lf", &b);
printf("Enter C: ");
scanf("%lf", &c);
x = quadratic_equation(a, b, c, 0); // THIS PIECE HERE MIGHT BE BAD PRACITCE ?
if (x == 0) {
printf("There are no real numerical values to this quadratic equation.");
}
else {
printf("------------\n");
printf("x1 = %.2f\n", quadratic_equation(a, b, c, 1));
printf("x2 = %.2f", quadratic_equation(a, b, c, -1));
}
}
return 0;
}
double quadratic_equation(double a, double b, double c, double d) {
double discriminant, x, insideroot;
insideroot = ((b*b) - (4*a*c));
if (insideroot < 0) {
return 0;
}
discriminant = sqrt(insideroot);
x = (-b + (d * discriminant))/(2 * a);
return x;
}
Большое спасибо за помощь: d!
Это выглядит, как будто, с помощью вызова 'quadratic_equation' с г = 0, ваш расчет на самом деле' х = (- b + (0 * дискриминант))/(2 * a) ', который является просто« x = -b/(2 * a) », который фактически не реализует квадратичное уравнение. –
Вы заметите, что он называет его «-1» и «1», который затем решает квадратичное уравнение. Более того, но что, если 'a' равно нулю? – mattjgalloway
@mattjgalloway: строго говоря, если 'a' равно нулю, это не квадратичное уравнение, но он должен определенно проверить это. – houbysoft