可变格式

2024-04-22

我编写了一个程序来计算平方有限差分矩阵,您可以在其中输入行数(等于列数)->这存储在变量矩阵中。该程序运行良好:

program fin_diff_matrix

  implicit none

  integer, dimension(:,:), allocatable :: A     
  integer :: matrix,i,j

  print *,'Enter elements:'
  read *, matrix

  allocate(A(matrix,matrix))

  A = 0
  A(1,1) = 2
  A(1,2) = -1
  A(matrix,matrix) = 2
  A(matrix,matrix-1) = -1

  do j=2,matrix-1
    A(j,j-1) = -1
    A(j,j) = 2
    A(j,j+1) = -1
  end do

  print *, 'Matrix A: '
  write(*,1) A

  1 format(6i10)

end program fin_diff_matrix

对于输出,我希望该矩阵针对输出进行格式化,例如如果用户输入 6 行,输出也应如下所示:

         2        -1         0         0         0         0
        -1         2        -1         0         0         0
         0        -1         2        -1         0         0
         0         0        -1         2        -1         0
         0         0         0        -1         2        -1
         0         0         0         0        -1         2

格式的输出也应该是可变的,例如如果用户输入 10,则输出也应格式化为 10 列。网上研究对于带尖括号的格式声明给出了如下解决方案:

  1 format(<matrix>i<10)

如果我在 Linux 中使用 gfortran 进行编译,我总是在终端中收到以下错误:

       fin_diff_matrix.f95:37.12:

     1 format(<matrix>i10)
            1
   Error: Unexpected element '<' in format string at (1)
   fin_diff_matrix.f95:35.11:

     write(*,1) A
           1
   Error: FORMAT label 1 at (1) not defined

这不起作用,我的错误是什么?


您尝试使用的语法是非标准的,它仅在某些编译器中有效,我不鼓励使用它。

另外,忘记FORMAT()好的陈述,它们已经过时了。

当您自己从多个部分构建格式字符串时,您可以在格式字符串中获取自己的数字

character(80) :: form
form = '(          (i10,1x))'
write(form(2:11),'(i10)') matrix

write(*,form) A

您还可以在每行循环中写入矩阵,然后可以使用任意大的计数或*在 Fortran 2008 中。

do i = 1, matrix
  write(*,'(999(i10,1x))') A(:,i)
end do

do i = 1, matrix
  write(*,'(*(i10,1x))') A
end do

只要检查一下我是否无意中转置了矩阵。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可变格式 的相关文章

  • git 预提交钩子格式代码 - Intellij/Android Studio

    本要点展示了如何在预提交时使用 Eclipse 格式化程序自动格式化 Java 代码 Source https gist github com ktoso 708972 https gist github com ktoso 708972
  • 格式化多维数组 Python

    如何编写代码来更改多维数组中每个单独数组的值a出现负值后立即归零 所以里面的第二个数组a有负值 12 34 5 6 88 10 30 75 10 会将其所有值及其后的值转为零 将数组变成 12 34 5 6 88 0 0 0 我怎样才能获得
  • 如何更改刻度标签字体大小

    在 matplotlib 图中 如何使用以下命令设置刻度标签的字体大小ax1 set xticklabels 更小 此外 如何将其从水平旋转为垂直 其实还有更简单的方法 我刚刚发现 import matplotlib pyplot as p
  • Fortran gfortran linux 中的“分段错误(核心转储)”错误

    我正在创建一个程序 该程序将分析目录中的文件 fits 然后它将在另一个目录中创建另一个文件 txt 它只是一个转换器 当我尝试执行该程序 编译正常 时 它给了我一条错误消息 程序收到信号 SIGSEGV 分段错误 无效的内存引用 此错误的
  • 编辑时可以在文本框控件内使用 Angular 的管道格式化程序吗?

    我已经声明了一种将大数字分成三位数组的格式 并像这样经常使用它 div Huge number i am huge make threesome div 现在 有一个对相应功能的请求 但在像这样的输入控件中实现
  • for 循环在 Python 中生成/导出输出所需的时间太长

    这个问题是上一个问题的延续for 循环花费太长时间才能产生输出 https stackoverflow com questions 41339200 for loop taking too long to produce output no
  • 输入类型货币格式,带逗号和小数位 2

    我只是想问如何制作输入类型文本的货币格式的JavaScript 当您输入数字时 数字是否可能带有逗号 另外 如何使数字固定为 2 个小数 如果我输入 3 位小数 最后一个数字将四舍五入 因此可以是 2 位小数 我有一个仅接受数字的文本框 我
  • Common Lisp 相当于 format 函数中的 \r 吗?

    基本上 我想只使用 Common Lisp 而不是 Python 来执行以下操作 print Hello world r n 我可以做到这一点 但它只输出 newline字符和跳过 return format t Hello world 我
  • 如何在 makefile 中拥有正确的 .mod 顺序

    我正在尝试用 Fortran 为我的项目创建一个 Makefile 并使其可在现在的项目中重用 我经过多次尝试后得出的 Mkefile 如下 问题是它在少数情况下工作正常 但现在我有这个文件 main f90 初始 f90 参数 f90 函
  • Fortran 意图(inout)与省略意图

    良好的实践表明 Fortran 中的子例程参数每个都应具有指定的意图 即intent in intent out or intent inout 如上所述这个问题 https stackoverflow com questions 1011
  • 如何使用 AngularJS 输出 JSON 数组中的元素

    JSON 数组定义在作用域中 scope faq Question 1 Answer1 Question 2 Answer2 HTML div f div Output Question 1 Answer1 Question 2 Answe
  • FORTRAN:数据多态

    我试图隐藏真实数据类型和复杂数据类型之间的差异 在 FORTRAN 2003 中 我认为可能有一种方法可以做到这一点 目标是定义一个多态可分配数组 其类型可以在运行时决定 另外 还有一个子例程 它使用多态数组来做一些代数 相同的方程适用于真
  • 带有数字/标签的 Fortran IF 语句而不是另一个语句

    这段 Fortran 代码的含义是什么 IF J1 3 20 20 21 21 J1 J1 3 20 IF J2 3 22 22 23 23 J2 J2 3 22 CONTINUE 我在旧项目中看到过 我不知道这个带有数字 标签 的 IF
  • 如何从 Fortran 调用 R 函数?

    根据http gallery rcpp org articles r function from c http gallery rcpp org articles r function from c Rcpp 允许用户从 C 调用 R 函数
  • 如何将日期字符串解析为Date? [复制]

    这个问题在这里已经有答案了 如何将下面的日期字符串解析为Date object String target Thu Sep 28 20 29 30 JST 2000 DateFormat df new SimpleDateFormat E
  • 如何保留用户的输入打印?

    我正在尝试添加用户的评论 所以我只是尝试读取输入并将其发送以进行打印 但问题是 一旦我刷新页面或输入另一个输入 打印的输入就会消失 因此 即使刷新页面或重新输入新评论 我也希望始终保持所有用户的显示 代码 div div
  • Fortran 子例程返回错误值

    嘿 我正在开发一个 Fortran 程序 遇到了一个奇怪的问题 当我尝试在调用特定子例程之前直接输出数组的某些值时 我得到了正确的值 然后 我尝试在启动子例程时输出同一数组的一些值 它们都是 0 我最终在子例程之后输出数组的值 并且这些值回
  • 在 PHP 字符串中格式化 MySQL 代码

    是否有任何程序 IDE 可以在 PHP 字符串中格式化 MySQL 代码 例如 我使用 PHPStorm IDE 但它无法做到这一点 它对 PHP 和 MYSQL 执行此操作 但不适用于 php 字符串内的 MYSQL 我已准备好使用新的
  • 在 Visual Studio 2010 中从 Fortran 调用 C++ 函数

    我想从 Fortran 调用 C 函数 为此 我在 Visual Studio 2010 中创建了一个 FORTRAN 项目 之后 我将一个 Cpp 项目添加到该 FORTRAN 项目中 当我要构建程序时出现以下错误 Error 1 unr
  • 有没有办法阻止 prettier / prettier-now 将函数参数分解为新行

    当使用 prettier prettier now 在保存时进行格式化时 当一个函数包装另一个函数时 它会中断到一个新行 我想知道是否有办法阻止这种行为 例如 期望的输出 app get campgrounds id catchAsync

随机推荐