【一元一次方程求解】(3+3+3+4=13分)
数学中在求解形如ax+b=c的一元一次方程时,首先会移项(把b移到等号右边),然后利用算式x=(c-b)/a来计算出未知数x的值。
下列程序就是用来对形如ax+b=c的一元一次方程进行求解,其中,b、c可以是任意整数,而a则为不等于零的整数。而且规定,从键盘输入的一元一次方程的形式都为ax+b=c这样的格式(也可为ax-b=c的形式),方程输入时以字符形式保存到字符数组exp[ ]中(输入时,无论a,b为何值,它们的值都必须原样写在对应的位置上。如,a=1,b=0时,则方程应以“1x+0=c”的形式输入,而不能以“x=c”的形式输入),并且以“.”作为输入结束标志。请完善程序。
program test8;
var
str_a,str_b,str_c:string;
x,a,b,c,i,j,k,code:integer;
op,ch:char;
exp:array[1..20] of char;
begin
write('input expression:');
read(ch);i:=0;
repeat
i:=i+1;exp[i]:=ch;
read(ch);
until ch='.' ;
j:=1;
while exp[j]<>'x' do
begin
str_a:= str_a+exp[j] ;j:=j+1;
end;
j:=j+1;
op:=exp[j];
j:=j+1;
while exp[j]<>'=' do
begin
str_b:=str_b+exp[j];j:=j+1;
end;
j:=j+1;
for k:=j to i do str_c:=str_c+exp[k];
val(str_a,a,code);val(str_b,b,code);val(str_c,c,code);
if op='-' then b:=-b;
x:= (c-b) div a ;
writeln('x=',x);
end.