在Fortran中将两个两位整数与数组相乘

时间:2018-06-18 07:46:51

标签: arrays fortran gfortran multiplication fortran95

我曾尝试使用数组和初步乘法方法编写一个代码,用于将两个两位数的整数相乘,例如 ab * cd 。但是,当我编译我的代码并插入任何输入时,输出结果是错误的。我跟踪了我的代码,得到了一个合适的结果,但在编译时却有所不同。例如,我插入9 9 9 9,在此代码中表示99 * 99,但结果是1210而不是9801.

program main
    ! multiplication of two double-digit integer ! array method
  implicit none
  integer , parameter :: size=2
  integer , dimension (size)::A
  integer , dimension (size)::B
  integer , dimension (size+1)::C
  integer , dimension (size+2)::D
  integer , dimension (size+2)::E
  integer :: i=0,carry1=0,carry2=0,carry3=0

  do i=1,size,1
    read *,A(i)
  end do
  do i=1,size,1
    read *,B(i)
  end do
  do i= 3,2,-1
        C(i)=B(size)*A(i-1)+carry1
        if (C(i)>9)then
            C(i)=mod (C(i),10)
            carry1 = C(i)/10
            else
            carry1=0
        end if
    end do
    C(1)=carry1

    D(4)=0

    do i=3,2,-1
            D(i)=B(size-1)*A(i-1)+carry2
            if (D(i)>9)then
                D(i)=mod (D(i),10)
                carry2= D(i)/10
                else
                carry2=0
            end if
    end do

  D(1)=carry2

  do i=4,2,-1
    E(i)=D(i)+C(i-1)+carry3
    if (E(i)>9) then
        E(i)=mod (E(i),10)
        carry3=1
        else
        carry3=0
    end if
  end do
  E(1)=D(1)+carry3

  do i=4,1,-1
    print*,E(i)
  end do

end program main

0 个答案:

没有答案