CyRhmU.jpeg
²é¿´: 2060  |  »Ø¸´: 7

zyj8119

ľ³æ (ÖøÃûдÊÖ)

[½»Á÷] ¡¾ÇóÖú¡¿´Ë³ÌÐòÒ²ÊÇûÓÐÎÊÌâÁË£¬µ«ÊÇÒÀÈ»ÔËÐв»³ö½á¹ûÒÑÓÐ2È˲ÎÓë

CODE:
!  Console5.f90
!
!  FUNCTIONS:
!  Console5 - Entry point of console application.
!

!****************************************************************************
!
!  PROGRAM: Console5
!
!  PURPOSE:  Entry point for the console application.
!
!****************************************************************************

   
    !
MODULE data
INTERFACE OPERATOR(*)
  MODULE PROCEDURE star
END INTERFACE
TYPE matrix
  INTEGER::m,n
  INTEGER,DIMENSION(:,:),POINTER::a
END TYPE matrix
CONTAINS
  FUNCTION star(mt1,mt2) RESULT(mproduct)
  TYPE(matrix),INTENT(IN)::mt1,mt2
  TYPE(matrix)::mproduct
  INTEGER::i,j,k
  IF(mt1.n/=mt2.n)THEN
    mproduct.m=0;mproduct.n=0
    ALLOCATE(mproduct%a(0,0))
  ELSE
    mproduct.m=mt1.m;mproduct.n=mt2.n
    ALLOCATE(mproduct%a(mt1.m,mt2.n))
    DO i=1,mt1.m
     DO j=1,mt2.n
      mproduct.a(i,j)=0
      DO k=1,mt1.n
      mproduct.a(i,j)=mproduct.a(i,j)+mt1.a(i,k)*mt2.a(k,j)
      END DO
     END DO
     END DO
    END IF
    END FUNCTION star
   END MODULE data
   !
     
     program Console5
    USE data
    TYPE(matrix)::mx1,mx2,mx
    INTEGER,TARGET::a1(2,4),a2(4,2)
    OPEN(1,FILE='myf1.out')
    a1=RESHAPE((/1,3,5,7,2,4,6,8/),(/2,4/))
    a2=RESHAPE((/2,4,6,8,1,3,5,7/),(/4,2/))
    mx1=matrix(2,4,a1);mx2=matrix(4,2,a2);mx=mx1*mx2
    WRITE(1,'(2I5)')((mx.a(i,j),j=1,2),i=1,2)
    end program Console5
   
  
  

ÎÒʹÓõÄÊÇIVF,ÒÔǰÓõͼÊÇCVF£¬Ó¦¸Ã¸ú±àÒëÆ÷¹ØÏµ²»´ó°É£¿
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:

ºÃºÃѧϰ£¬ÌìÌìÏòÉÏ¡£
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

snoopyzhao

ÖÁ×ðľ³æ (Ö°Òµ×÷¼Ò)

zyj8119(½ð±Ò+10):Ó¦¸ÃûÓÐÎÊÌâ°¡¡£¡£¡£ 2010-09-11 15:29:28
ÄãÕâ¸ö³ÌÐòÎÒÓà gfortran ¶¼²»ÄܱàÒ룬Ϊʲô£¿
2Â¥2010-09-10 22:16:14
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

snoopyzhao

ÖÁ×ðľ³æ (Ö°Òµ×÷¼Ò)

µÄÈ·²»ÄܱàÒ룬gfortran »áÌáʾ IF(mt1.n/=mt2.n)THEN ÕâÒ»ÐÐÓдíÎ󣬵±È»£¬»¹ÓкܶàºÜ¶àµÄ´íÎó¡£ÎÒÒ²²»ÖªµÀÊÇÔõô»ØÊ¶ù£¬ÒòΪÎÒ¶Ô f90 ²»ÊìϤ¡­¡­
3Â¥2010-09-11 21:54:24
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

zyj8119

ľ³æ (ÖøÃûдÊÖ)

ÒýÓûØÌû:
Originally posted by snoopyzhao at 2010-09-11 21:54:24:
µÄÈ·²»ÄܱàÒ룬gfortran »áÌáʾ IF(mt1.n/=mt2.n)THEN ÕâÒ»ÐÐÓдíÎ󣬵±È»£¬»¹ÓкܶàºÜ¶àµÄ´íÎó¡£ÎÒÒ²²»ÖªµÀÊÇÔõô»ØÊ¶ù£¬ÒòΪÎÒ¶Ô f90 ²»ÊìϤ¡­¡­

ÎҼǵÃgfortranÖ»ÄܱàÒëF77,F90ÐèÒªÓÃifort.
ºÃºÃѧϰ£¬ÌìÌìÏòÉÏ¡£
4Â¥2010-09-11 21:56:07
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

snoopyzhao

ÖÁ×ðľ³æ (Ö°Òµ×÷¼Ò)

¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
Äã˵µÄÄÇÊÇ g77£¬gfortran ×î³õ¾ÍÊÇ×÷Ϊ f95 ±àÒëÆ÷¿ª·¢µÄ£¬ºÇºÇ£¬Êµ¼ÊÉÏ gfortran Á¬ Fortran 2008 ±ê×¼ÖеÄÒ»Ð©ÌØÐÔ¶¼ÓÐËùÖ§³ÖÁË£¬ºÇºÇ
5Â¥2010-09-11 22:13:17
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

zyj8119

ľ³æ (ÖøÃûдÊÖ)

ÒýÓûØÌû:
Originally posted by snoopyzhao at 2010-09-11 22:13:17:
Äã˵µÄÄÇÊÇ g77£¬gfortran ×î³õ¾ÍÊÇ×÷Ϊ f95 ±àÒëÆ÷¿ª·¢µÄ£¬ºÇºÇ£¬Êµ¼ÊÉÏ gfortran Á¬ Fortran 2008 ±ê×¼ÖеÄÒ»Ð©ÌØÐÔ¶¼ÓÐËùÖ§³ÖÁË£¬ºÇºÇ

Õâ¾ÍÆæ¹ÖÁË¡£
ºÃºÃѧϰ£¬ÌìÌìÏòÉÏ¡£
6Â¥2010-09-11 22:16:47
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

snoopyzhao

ÖÁ×ðľ³æ (Ö°Òµ×÷¼Ò)

¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
ÏÂÃæÊÇÎÒ±àÒëʱµÄÊä³ö£º

gfortran -Wall zz.f90

zz.f90:30.8:

  IF(mt1.n/=mt2.n)THEN
        1
Error: Syntax error in IF-expression at (1)
zz.f90:31.4:

    mproduct.m=0;mproduct.n=0
    1
Error: Unclassifiable statement at (1)
zz.f90:31.17:

    mproduct.m=0;mproduct.n=0
                 1
Error: Unclassifiable statement at (1)
zz.f90:33.6:

  ELSE
      1
Error: Unexpected ELSE statement at (1)
zz.f90:34.4:

    mproduct.m=mt1.m;mproduct.n=mt2.n
    1
Error: Unclassifiable statement at (1)
zz.f90:34.21:

    mproduct.m=mt1.m;mproduct.n=mt2.n
                     1
Error: Unclassifiable statement at (1)
zz.f90:35.27:

    ALLOCATE(mproduct%a(mt1.m,mt2.n))
                           1
Error: Invalid form of array reference at (1)
zz.f90:36.14:

    DO i=1,mt1.m
              1
Error: Syntax error in DO statement at (1)
zz.f90:37.15:

     DO j=1,mt2.n
               1
Error: Syntax error in DO statement at (1)
zz.f90:38.6:

      mproduct.a(i,j)=0
      1
Error: Unclassifiable statement at (1)
zz.f90:39.16:

      DO k=1,mt1.n
                1
Error: Syntax error in DO statement at (1)
zz.f90:40.6:

      mproduct.a(i,j)=mproduct.a(i,j)+mt1.a(i,k)*mt2.a(k,j)
      1
Error: Unclassifiable statement at (1)
zz.f90:41.9:

      END DO
         1
Error: Expecting END FUNCTION statement at (1)
zz.f90:42.8:

     END DO
        1
Error: Expecting END FUNCTION statement at (1)
zz.f90:43.8:

     END DO
        1
Error: Expecting END FUNCTION statement at (1)
zz.f90:44.7:

    END IF
       1
Error: Expecting END FUNCTION statement at (1)
zz.f90:50.12:

    USE data
            1
Fatal Error: Can't open module file 'data.mod' for reading at (1): No such file or directory
gfortran.exe: Internal error: Aborted (program f951)
Please submit a full bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.
7Â¥2010-09-11 22:20:04
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

snoopyzhao

ÖÁ×ðľ³æ (Ö°Òµ×÷¼Ò)

¡ï
nono2009(½ð±Ò+1):¹ÄÀøÓ¦Öú¡£ 2010-09-12 07:18:24
ÎÒ²»ÊìϤ f90£¬²»¹ýÎÒµÄÓ¡ÏóÖÐ mt1.n Ö®ÀàµÄ²»ÄÜ×÷Ϊ±äÁ¿Ãû°É¡­¡­
8Â¥2010-09-11 22:20:55
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ zyj8119 µÄÖ÷Ìâ¸üÐÂ
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û