2012-09-27 83 views
0

印刷整數數組我有一個整數陣列FORTRAN90:在不同結構

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

write(*,*)idate   ! prints ' 0 3 1 1979' 

我想idate被保存在一個不同的變量(整數/整數數組只),將打印日期爲:

1979030100 

而不將其更改爲字符/字符串。

可以這樣做。請原諒我,如果它是微不足道的,但我已經花了不少時間。

+0

以這種形式打印日期相對比較容易,您是否還需要將其作爲整數描述來存儲? –

+0

是的,我需要它將它存儲在一個變量中,該變量將作爲代碼的其他部分的輸入。如果你告訴我如何完成,我將不勝感激!謝謝 – jkp

回答

1

你可以做這樣的事情:

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/)

+0

謝謝馬克!現在看起來確定,但是當年份和日期(運行時更改)將是單個數字(10的指數應相應更改)時,問題就會出現。當然,這也可以通過引入if-else循環來處理。有沒有更復雜的方式? – jkp

+0

如果你可以解釋一個更復雜的實現你的目標的方式,那麼你可以幫助你編寫代碼。現在,我看不到更復雜的需要。當然,如果你的輸入數據與你問題中的例子不匹配,你將不得不修改代碼;再次,我看不到任何問題給你。 –

+0

很抱歉,如果您受到我的評論的傷害,請馬上注意。我可以打印它使用:寫(*,'(i4,3i2.2)')idate(4),idate(2),idate(3),idate(1)。以類似的方式,我認爲會存在一些像TRIM或ADJUSTL這樣的函數用於整數,並且可以完成任務。 – jkp