Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays fortran90:以不同结构打印整数数组_Arrays_Integer_Structure_Fortran90 - Fatal编程技术网

Arrays fortran90:以不同结构打印整数数组

Arrays fortran90:以不同结构打印整数数组,arrays,integer,structure,fortran90,Arrays,Integer,Structure,Fortran90,我有一个整数数组 int(4) :: idate ! 1979 March 1st 00hrs write(*,*)idate ! prints ' 0 3 1 1979' 我希望idate保存在另一个变量(仅限整数/整数数组)中,该变量将日期打印为: 1979030100 不将其更改为字符/字符串 这是可以做到的。请原谅,如果这件事很琐碎,我已经花了很多时间在上面了。你可以这样做: integer :: date_as_int ... date

我有一个整数数组

int(4) :: idate            ! 1979 March 1st 00hrs

write(*,*)idate            ! prints ' 0 3 1 1979'
我希望
idate
保存在另一个变量(仅限整数/整数数组)中,该变量将日期打印为:

1979030100
不将其更改为字符/字符串


这是可以做到的。请原谅,如果这件事很琐碎,我已经花了很多时间在上面了。

你可以这样做:

integer :: date_as_int
...
date_as_int = idate(1)*10**6 + idate(2)*10**4 + idate(3)*10**2 + idate(4)
你甚至可以逃脱惩罚

date_as_int = sum(idate*10**[6,4,2,0])


方括号语法来自Fortran 2003。对于较旧的编译器,
[6,4,2,0]
应该被
(/6,4,2,0/)
所取代。以这种形式打印日期相对容易,您是否还需要将其存储为该描述的整数?是的,我需要将其存储在变量中,该变量将作为代码其他部分的输入。如果你能告诉我怎么做,我将不胜感激!!!谢谢你,马克!现在看来还可以,但当年份和日期(运行时的变化)是个位数(10的指数应该相应地变化)时,问题就会出现。当然,这也可以通过引入if-else循环来处理。还有更复杂的方法吗???如果你能精确地解释一种更复杂的方法来达到你的目的,那么你就可以帮助你编写代码了。现在,我看不出有任何需要更复杂。当然,如果您的输入数据与问题中的示例不匹配,您必须修改代码;再一次,我看不出你会有什么问题。马克,如果我的评论伤害了你,我很抱歉。我可以使用write(*,'(i4,3i2.2')idate(4),idate(2),idate(3),idate(1)打印它。以类似的方式,我认为会存在一些函数,比如整型的TRIM或ADJUSTL,任务可以完成。我没有受伤,我脸皮厚。但我越来越困惑于你想做什么。您评论说您没有尝试格式化输出日期,而是将其分配给一个整数变量。现在,您正在询问有关为字符变量定义的函数的问题。如果您需要/想要更多帮助,请澄清,如果不需要。第二个应该是
DOT_乘积(idate,10**[6,4,2,0])
SUM(idate*10**[6,4,2,0])
date_as_int = dot_product(idate, 10**[6,4,2,0])