印刷整數數組我有一個整數陣列FORTRAN90:在不同結構
int(4) :: idate ! 1979 March 1st 00hrs
write(*,*)idate ! prints ' 0 3 1 1979'
我想idate
被保存在一個不同的變量(整數/整數數組只),將打印日期爲:
1979030100
而不將其更改爲字符/字符串。
可以這樣做。請原諒我,如果它是微不足道的,但我已經花了不少時間。
印刷整數數組我有一個整數陣列FORTRAN90:在不同結構
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])
或
date_as_int = dot_product(idate, 10**[6,4,2,0])
的方括號語法與2003年的Fortran對於較早脫身編譯器[6,4,2,0]
應該被替換爲(/6,4,2,0/)
。
謝謝馬克!現在看起來確定,但是當年份和日期(運行時更改)將是單個數字(10的指數應相應更改)時,問題就會出現。當然,這也可以通過引入if-else循環來處理。有沒有更復雜的方式? – jkp
如果你可以解釋一個更復雜的實現你的目標的方式,那麼你可以幫助你編寫代碼。現在,我看不到更復雜的需要。當然,如果你的輸入數據與你問題中的例子不匹配,你將不得不修改代碼;再次,我看不到任何問題給你。 –
很抱歉,如果您受到我的評論的傷害,請馬上注意。我可以打印它使用:寫(*,'(i4,3i2.2)')idate(4),idate(2),idate(3),idate(1)。以類似的方式,我認爲會存在一些像TRIM或ADJUSTL這樣的函數用於整數,並且可以完成任務。 – jkp
以這種形式打印日期相對比較容易,您是否還需要將其作爲整數描述來存儲? –
是的,我需要它將它存儲在一個變量中,該變量將作爲代碼的其他部分的輸入。如果你告訴我如何完成,我將不勝感激!謝謝 – jkp