这个fortran代码应该从txt文件中的简单矩阵表中复制数据,然后根据每行和每列的先前等级计算等级和平均值.出于某种原因,我无法获得等级或平均值打印出来,它们显示为空白或0或星标.该程序在从txt文件打印矩阵表后运行时崩溃,它表示错误是访问冲突 - 所以根本没有多大帮助.到目前为止,我的代码是:
program calculate1
real,dimension(:,:),allocatable :: a
character(200)::line
print *,'How many rows are there?'
read *,n !amount of rows
print *,'How many columns are there?'
read *,m !amount of columns
allocate (a(n+1,m+1))
open(1, file='in1.txt')
call print_out (a,n+1,m+1)
Close(1);
contains
subroutine print_out(b,n,m)
real,dimension(:,:):: b
character(200)::line(n)
character(1)::g
write(*,'(10x)',advance='no')
do j=2,m-1
write(*,100,advance='no'),'hw',j-1
enddo
100 format(a2,i2,3x)
print '(a6,a6)','exam ','grade '
do i=1,n-1 !makes rows from data
read(1,'(a)') line(i) !read from in1.txt
write(*,'(a)') line(i) !write to screen
enddo
do i=1,n !makes (m+1)th column
b(i,m+1)= sum(b(i,1:m-1))+3*b(i,m)
enddo
do j=1,m+1 !makes (n+1)th row
b(n+1,j)= sum(b(1:n,j))/n
enddo
101 format(a8,4x,20f8.2) ! format for average print
print 101, 'averages', b(n+1,j)
endsubroutine
endprogram
Run Code Online (Sandbox Code Playgroud)
这是in1.txt文件中的内容:
jackson 4. 4. 4.2 8.
johnson 4. 2. 2.11 3.
sugimoto 1. 0. 1.5 0.
wong 3.5 3. 3. 2.
Run Code Online (Sandbox Code Playgroud)
由于这是作业,我只能提示:你的代码从文件中读取一行到一个字符变量并忽略它.然后它对矩阵执行一些操作,该矩阵b尚未分配任何值.如果在write语句中提供了错误类型的变量,Fortran程序经常会崩溃,例如,当format语句指定实数时,字符变量.
由于这是作业:
| 归档时间: |
|
| 查看次数: |
270 次 |
| 最近记录: |