不是VIP会员,不能显示答案

题目解答

题目:
多项式加法运算(20分,每空4分)
一个仅含有x的多项式可以用下列的方式表示:
(系数,指数),(系数,指数),…,(0,0)。
其中(0,0)作为结束标志。
例如:P(x)=4x^6-3x^3+2x^2-1
可表示为:(4,6),(-3,3),(2,2),(-1,0),(0,0)
Q(x)=x^4-x+1
可表示为:(1,4),(-1,1),(1,0),(0,0)
当用上面的方式给出2个多项式之后,编制程序对这两个多项式进行加法运算,结果也用上面的方式给出。
例如:上面的P(x)和Q(x)相加的结果为:
4x^6+x^4-3x^3+2x^2-x
表示结果为:(4,6),(1,4),(-3,3),(2,2),(-1,1),(0,0)
[算法描述] 多项式可用数组P表示;分别以p1表示P,p2表示Q,p3表示结果。
处理的过程为将P复制到p3,然后逐项检查Q,当发现有相同的方次时,进行系数相加;当发现没有相同方次时,插入到p3中去。
    PROGRAM EXP3(INPUT,OUTPUT)
     VAR 
       X,Y,I,I1,J,J1,J2:INTEGER;
       P1,P2,P3     :ARRAY[1..20,1..2] OF INTEGER
     BEGIN
       J1:=0;  WRITE('INPUT P(X)=');  READ(X,Y);
       WHILE X<>0 DO 
           BEGIN
          J1:=J1+1; P1[J1,1]:=X; P1[J1,2]:=Y; READ(X,Y)
               END;
       J1:=J1+1; P1[J1,1]:=0; P1[J1,2]:=0;
       WRITE('INPUT Q(X)=');  READ(X,Y);   J2:=0; 
       WHILE X<>0 DO 
          BEGIN
            J2:=J2+1; P2[J2,1]:=X; P2[J2,2]:=Y;  READ(X,Y)
          END;
       J2:=J2+1; P2[J2,1]:=0; P2[J2,2]:=0;
       FOR I:=1 TO J1 DO 
          BEGIN
             P3[I,1]:=P1[I,1]; P3[I,2]:=P1[I,2]
          END;
         I:=1;
         WHILE    P2[I,1]<>0    DO
           BEGIN
              IF   P2[I,1]>P3[1,2]    THEN 
                   BEGIN
                      FOR J:=J1 DOWN TO 1 DO
                         BEGIN
                            P3[J+1,1]:=P3[J,1];    P3[J+1,2]:=P3[J,2]
                         END;
                      P3[I,1]:=P2[I,1]; P3[I,2]:=P2[I,2]; J1:=J1+1
                   END
                ELSE BEGIN
                        I1:=1;
                        WHILE P2[I,2]<P3[I1,2] DO 
                             I1:=I1+1   ;
                           IF P2[I,2]=P3[I1,2] THEN
                              P3[I1,1]:= P3[I1,1]+P2[I,1]    ;
                            ELSE BEGIN
                               FOR J:=J1 DOWNTO I1 DO 
                                  BEGIN
                                     P3[J+1,1]:=P3[J,1];   P3[J+1,2]:=P3[J,2]
                                  END;
                                P3[I1,1]:=P2[I,1]; P3[I1,2]:=P2[I,2];
                                  J1:=J1+1   ;      
                            END;
                      END;
                   I:=I+1
            END;
            FOR J:=1 TO J1-2 DO WRITE ('(',P3[J,1],',',P3[J,2],'),');
            WRITELN('(',P3[J+1,1],',',P3[J+1,2],')');
       END.
考点:
分析:
解答:
评论:
老师: