切换到宽版
  • 5852阅读
  • 4回复

又简单又古老的题目,帮帮我!! [复制链接]

上一主题 下一主题
离线udjay
 
只看楼主 倒序阅读 0 发表于: 2006-12-08
NOI2000普及组复赛的第一题:解一元一次方程。



program e1(input,output);
var
    v:char;
    e:real;
    a,b,c,d,n:integer;
    T:string;
procedure huajian(s:string;var x,y:integer);
var   m,f,p:integer;
begin
    p:=1;x:=1;y:=1;
    repeat
      m:=0;f:=1;
      case s[p] of
          '+':begin f:=1;inc(p);end;
          '-':begin f:=-1;inc(p);end;
      end;
      if s[p]=v then m:=1;
      while (p<=length(s))and(s[p]in['0'..'9']) do
      begin
          m:=m*10+ord(s[p])-ord('0');
          inc(p);
      end;
      if ((p<=length(s))and(s[p]=v)) then
      begin
            x:=x+m*f;
            inc(p);
      end
      else y:=y+m*f;
  until p>length(s);
end;
begin
  readln(T);
  for v:='a' to 'z' do
      if pos(T,v)>0 then break;
  n:=pos('=',T);
  huajian(copy(T,1,n-1),a,b);
  huajian(copy(T,n+1,length(T)-n),c,d);
  e:=(d-b)/(a-c);
  writeln(v,'=',e:0:3);
end.


编译成功 ,但是执行以后就动不了了,不知道错在哪?
请各位oifans帮我看看,谢谢了
[ 此贴被udjay在2006-12-08 14:06重新编辑 ]
离线udjay
只看该作者 1 发表于: 2006-12-13
怎么没人理我啊,自己顶一下了、
离线udjay
只看该作者 2 发表于: 2006-12-14
失望,这里的人都不善待新友。
离线aboutd
只看该作者 3 发表于: 2006-12-19
p:=1;x:=1;y:=1;
  repeat
    m:=0;f:=1;
    case s[p] of
      '+':begin f:=1;inc(p);end;
      '-':begin f:=-1;inc(p);end;
    end;
应该是p的数值出错了
离线aboutd
只看该作者 4 发表于: 2006-12-19
还有
for v:='a' to 'z' do
    if pos(T,v)>0 then break;
n:=pos('=',T);
huajian(copy(T,1,n-1),a,b);
huajian(copy(T,n+1,length(T)-n),c,d);
死循环
快速回复
限100 字节
 
上一个 下一个