Модифицировать квадратное уравнение, добавив проверку того, что первый коэффициент не равен нулю - Pascal ABC
Формулировка задачи:
Модифицируйте программу расчета корней квадратного уравнения,добавив к ней проверку того, что первый коэффициент не равен нулю. В противном случае сообщите пользователю , что уравнение не квадратное, а линейное и вычислите его единственный корень.Если два коэффициента равны нулю, а третий не равен - сообщите пользователю что корней нет. Если все коэффициенты равны нулю, сообщите, что корнем является любое число.
Решение задачи: «Модифицировать квадратное уравнение, добавив проверку того, что первый коэффициент не равен нулю»
textual
Листинг программы
if (a=0)and(b=0)and(c=0) then s:='x-любое число' else if (a=0)and(b=0)and(c<>0) then s:='действительных корней нет' else if (a=0)and(b<>0)and(c=0) then s:='x=0' else if (a=0)and(b<>0)and(c<>0) then begin x1:=-c/b; str(x1:0:2,s1); s:='x='+s1 end else if (a<>0)and(b=0)and(c=0) then s:='x1=x2=0' else if (a<>0)and(b=0)and(c<>0) then begin if -c/a<0 then s:='действительных корней нет' else begin x1:=sqrt(-c/a); x2:=-x1; str(x1:0:2,s1); str(x2:0:2,s2); s:='x1='+s1+' x2='+s2; end end else if(a<>0)and(b<>0)and(c=0) then begin x2:=-b/a; str(x2:0:2,s2); s:='x1=0 x2='+s2 end else begin d:=b*b-4*a*c; if d<0 then s:='действительных корней нет' else if d=0 then begin x1:=-b/(2*a); str(x1:0:2,s1); s:='x1=x2='+s1; end else begin x1:=(-b-sqrt(d))/(2*a); x2:=(-b+sqrt(d))/(2*a); str(x1:0:2,s1); str(x2:0:2,s2); s:='x1='+s1+' x2='+s2; end end
Объяснение кода листинга программы
- Проверяется условие a=0 and b=0 and c=0. Если оно выполняется, то присваивается переменной s значение 'x-любое число'.
- Проверяется условие a=0 and b=0 and c<>0. Если оно выполняется, то присваивается переменной s значение 'действительных корней нет'.
- Проверяется условие a=0 and b<>0 and c=0. Если оно выполняется, то присваивается переменной s значение 'x=0'.
- Проверяется условие a=0 and b<>0 and c<>0. Если оно выполняется, то выполняется блок кода:
- присваивается переменной x1 значение -c/b;
- выводится значение x1 с помощью функции str();
- присваивается переменной s значение 'x='+s1.
- Проверяется условие a<>0) and (b=0) and (c=0). Если оно выполняется, то присваивается переменной s значение 'x1=x2=0'.
- Проверяется условие a<>0) and (b=0) and (c<>0). Если оно выполняется, то выполняется блок кода:
- если -c/a<0, то присваивается переменной s значение 'действительных корней нет';
- иначе выполняется блок кода:
- присваивается переменной x1 значение sqrt(-c/a);
- присваивается переменной x2 значение -x1;
- выводится значение x1 с помощью функции str();
- присваивается переменной s значение 'x1='+s1+' x2='+s2;
- в конце выполняется оператор s:='x1='+s1+' x2='+s2;.
- Если ни одно из вышеперечисленных условий не выполняется, то выполняется блок кода:
- вычисляется значение d как bb-4a*c;
- проверяется значение d. Если оно меньше нуля, то присваивается переменной s значение 'действительных корней нет';
- иначе выполняется блок кода:
- присваивается переменной x1 значение (-b-sqrt(d))/(2*a);
- присваивается переменной x2 значение (-b+sqrt(d))/(2*a);
- выводятся значения x1 и x2 с помощью функции str();
- присваивается переменной s значение 'x1='+s1+' x2='+s2;.