Я работаю над практическим вопросом, который задал нам наш учитель, и он вычисляет корни квадратного уравнения c. Говорят, что не использовать if в нем и использовать вместо него switch_case. в этом коде я прошу пользователя ввести три целочисленных значения, и после некоторой математической операции результатом будет дельта, которую необходимо определить, если она положительна, отрицательна или равна 0, а затем выполнить соответствующую операцию над ней , как показано ниже:
int opt=0,a,b,c,delta;
double x1,x2,real,img;
printf("Enter the integer coefficients a, b and c respectively: ");
scanf("%i%i%i",&a,&b,&c);
delta = b*b - 4*a*c;
Теперь, чтобы связать правильную операцию со знаком дельты, мне нужно использовать switch_case следующим образом:
switch(delta){
case delta>0:
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
printf("the roots of the quadratic equation you entered are x1=%.3lf & x2=%.3lf",x1,x2);
break;
case 0:
x1=(-b)/(2*a);
printf("the roots of the quadratic equation you entered are the same and equal to x=%.3lf",x1);
break;
case delta<0:
real=(-b)/(2*a);
img=sqrt(-delta)/(2*a);
printf("the roots of the quadratic equation you entered is x1=%.3lf+i%.3lf & x2=%.3lf-i%.3lf",real,img,real,img);
break;
default:
printf("an error accured during operation");
}
, но поскольку дельта не предопределена и вычисляется во время выполнения кода кейсы не работают, и я сталкиваюсь с ошибкой «метка кейса не сводится к целочисленной константе». Есть ли какой-нибудь трюк или обычный способ использования switch_case с такими переменными (не предопределено) ??