| 24 | 1/1 | 返回列表 |
| 查看: 2016 | 回復(fù): 23 | |||
[交流]
【求助】如何實現(xiàn)數(shù)字緊貼字母輸入
|
|
H 1 H 2 H 3 H 4 H 5 H 6 H 7 H 8 H 9 H 10 H 11 H 12 請教前輩,如何讓后面的數(shù)字緊貼著字母輸入呢后面還有幾百行 |
» 搶金幣啦!回帖就可以得到:
+1/84
+1/36
+1/34
+1/32
+1/28
+1/17
+1/16
+1/15
+1/12
+1/8
+1/7
+1/7
+1/5
+2/4
+1/4
+1/4
+1/2
+1/2
+1/1
+1/1
|
program align_left_output_1 do i=1,200 L=int(log10(i*1.0))+1 write(*,100) i enddo 100 format('H'I end program program align_left_output_2 character*8 tmpchar do i=1,200 write(tmpchar,'(I8)') i write(*,*) 'H'//adjustl(tmpchar) enddo end program 第一種方法形式簡單,容易理解。但變寬度輸出依賴于編譯器,可移植性不好;而且用到了對數(shù)運算,在數(shù)據(jù)量很大時效率較低。 第二種方法借用了臨時字符串做內(nèi)部文件,效率可能更高一些。 |
|
Originally posted by xioooli at 2011-01-13 09:44:55: 你的文件如果都輸出好了,并且保存在 file 里面的話,到 shell 里面運行這個命令就搞定。 謝謝你啊,哈哈 |
|
Originally posted by uiui at 2011-01-12 13:49:20: 在call random_seed時不要加參數(shù) 請教個問題,用fortran讀取文件編譯通過,但是讀取的時候出現(xiàn)這個錯誤“Fortran runtime error: End of file”,貼上說在文本的最后敲enter,但是沒解決(昨天成功讀取了,今天又不行了) 參考的是這個帖子http://www.gaoyang168.com/bbs/viewthread.php?tid=2760897里面的code |
至尊木蟲 (職業(yè)作家)
|
Originally posted by xk6891 at 2011-01-13 10:19:56: 請教個問題,用fortran讀取文件編譯通過,但是讀取的時候出現(xiàn)這個錯誤“Fortran runtime error: End of file”,貼上說在文本的最后敲enter,但是沒解決(昨天成功讀取了,今天又不行了) 參考的是這個帖子[ur ... 在 read 中加一個選項,告訴程序當(dāng)遇到 end of file 時干什么…… |
|
Originally posted by snoopyzhao at 2011-01-13 10:25:59: 在 read 中加一個選項,告訴程序當(dāng)遇到 end of file 時干什么…… 還是不明白,您能否再細(xì)致明示一下,是read(……)括號當(dāng)中的什么選項。 ![]() 這個帖子http://forum.simwe.com/viewthread.php?tid=852737有時候成功,我把里面第一個程序中read(100)改成了*,昨天成功了幾次,但是修改成要讀我的數(shù)據(jù)數(shù)目時,就失敗了 ,沒看懂[ Last edited by xk6891 on 2011-1-13 at 11:15 ] |
至尊木蟲 (職業(yè)作家)
|
Originally posted by xk6891 at 2011-01-13 11:09:00: 還是不明白,您能否再細(xì)致明示一下,是read(……)括號當(dāng)中的什么選項。 ![]() 這個帖子http://forum.simwe.com/viewthread.php?tid=852737有時候成功,我把里面第一個程序中read(100)改成了 ... 這個論壇我訪問不了,沒有帳號,呵呵…… 你把你的問題在這里描述一下…… |
|
Originally posted by snoopyzhao at 2011-01-13 11:21:43: 這個論壇我訪問不了,沒有帳號,呵呵…… 你把你的問題在這里描述一下…… 這是帖子上的內(nèi)容 說明:我不知道你的文件里面的具體格式,所以只能用格式語句100來表示了,具體自己弄吧。我下面這個程序是把文件里面的所有數(shù)據(jù)都讀取出來,然后用了一個do循環(huán),將你要的第三列數(shù)據(jù)賦值給了b數(shù)組,不知道是不是你想要的。implicit real*8 (a-h,o-z) dimension a(3,7),b(3,1) open (1,file='shuju.dat',form='formatted',status='unknown') do i=1,3 read (1,100) (a(i,j),j=1,7) end do close (1) do i=1,3 b(i,1)=a(i,3) end do end 復(fù)制代碼 為的是讀取這組數(shù)據(jù)中的第三列 例如這樣一個文件: 1 2 3 4 5 u 1 2 3 6 5 x 55 2 2 3 6 9 5 4 5 如果只想讀入其中第三列,也就是第三個空格(backspace)處的數(shù)字,如何實現(xiàn)呢? 謝謝!。 對于fortran對文本數(shù)據(jù)操作沒有看懂,覺得文本操作時read write里面很多選項,但是貌似作用不大,是這樣么 [ Last edited by xk6891 on 2011-1-13 at 11:30 ] |
至尊木蟲 (職業(yè)作家)
|
program main real a,b dimension a(3,7),b(3,1) open (17,file='data.dat',status='old') do i=1,3 read (17,*) (a(i,j),j=1,3) end do close (17) open (18,file='fort.13',status='unknown') do i=1,3 b(i,1)=a(i,3) write(18,*)b(i,:) end do close(18) end |
至尊木蟲 (職業(yè)作家)
|
這樣寫可能更 fortran 90 一些,呵呵…… program main implicit none integer, dimension(3) :: b integer :: i, ios character(len=80) :: line open (17,file='data.dat',status='old') open (18,file='fort.13',status='unknown') i=0 do i=i+1 read(unit=17,fmt='(a)', iostat=ios) line if (ios < 0) exit read(line,'(4X,I1)') b(i) write(18,*) b(i) enddo end program main |
至尊木蟲 (職業(yè)作家)
至尊木蟲 (職業(yè)作家)
|
Originally posted by snoopyzhao at 2011-01-13 19:59:40: 我覺得 90 的話,入門可以看 “fortran 90 編程指南”,袁駟,葉康生譯,高等教育出版社出版的。但有些術(shù)語可能翻譯的比較別扭…… 好的,找來看一看 fortran對于格式的要求很嚴(yán)格,剛開始讀取數(shù)據(jù)的時候出現(xiàn)的是 At line 10 of file tiH.f90 (unit = 17, file = 'wa_xyz.dat') Fortran runtime error: End of file 這個錯誤修改之后,對于讀取和寫入數(shù)據(jù)采取不同的格式之后,看出了問題所在,下面是 [code:] program main implicit none integer i,j character B real A dimension B(768),A(768,3) open(17,file='wa_xyz',status='old') do i=1,768 read (17,*) B(i),A(i,1),A(i,2),A(i,3) end do close(17) open(18,file='nem_wa_xyz',status='unknown') do i=1,768 if(mod(i,3)/=0)then write(18,*)(B(i),A(i,j),j=1,3) end if end do close(18) stop end program [code:] 讀取這樣一段數(shù)據(jù): O 3.668000 10.082000 15.904000 H 3.224000 10.451000 15.101000 H 3.092000 10.379000 16.627001 O 5.186000 16.695999 12.072000 H 6.083000 16.979000 11.816000 H 5.337000 15.832000 12.490000 O 3.786000 16.318001 1.310000 H 3.781000 15.388000 1.196000 H 4.528000 16.580000 0.781000 O 6.205000 6.991000 18.441999 H 6.782000 7.347000 19.152000 H 5.309000 7.062000 18.799999 O 16.125999 14.701000 4.577000 H 16.070000 14.272000 3.726000 ……………………………………………………………………………… 得到的如下 O 3.6680000 O 10.082000 O 15.904000 H 3.2240000 H 10.451000 H 15.101000 O 5.1859999 O 16.695999 O 12.072000 H 6.0830002 H 16.979000 H 11.816000 O 3.7860000 O 16.318001 O 1.3099999 H 3.7809999 H 15.388000 H 1.1960000 O 6.2049999 O 6.9910002 O 18.441999 H 6.7820001 H 7.3470001 H 19.152000 O 16.125999 O 14.701000 O 4.5770001 H 16.070000 H 14.272000 H 3.7260001 O 2.7500000 O 8.8439999 O 9.6289997 H 2.1099999 H 8.2900000 H 9.9980001 O 10.674000 O 8.9090004 O 4.9860001 H 10.998000 H 8.8710003 H 5.9320002 O 2.00000009E-03 O 5.6669998 O 14.591000 H 0.48300001 H 5.9899998 H 13.830000 ……………………………………………………………………………… 這就可以明顯的看出問題是出在哪里了,本來讀取數(shù)據(jù)的時候采用的是和寫入一樣的方式(B(i),A(i,j),j=1,3),一直出現(xiàn)上面的錯誤,記錄一下,以備日后學(xué)習(xí)汲取教訓(xùn) [ Last edited by xk6891 on 2011-3-20 at 13:20 ] 進一步修改成這樣就順多了,首先要能讀,然后才是寫入數(shù)據(jù) code: program main implicit none integer i,j character B real A dimension B(768),A(768,3) open(17,file='wa_xyz',status='old') do i=1,768 read(17,*)B(i),A(i,1),A(i,2),A(i,3) end do close(17) open(18,file='nem_wa_xyz',status='unknown') do i=1,768 if(mod(i,3)/=0)then write(18,"(A3,3(F16.6))" B(i),A(i,1),A(i,2),A(i,3)end if end do close(18) stop end program code: 得到的結(jié)果 O 3.668000 10.082000 15.904000 H 3.224000 10.451000 15.101000 O 5.186000 16.695999 12.072000 H 6.083000 16.979000 11.816000 O 3.786000 16.318001 1.310000 H 3.781000 15.388000 1.196000 O 6.205000 6.991000 18.441999 H 6.782000 7.347000 19.152000 O 16.125999 14.701000 4.577000 H 16.070000 14.272000 3.726000 O 2.750000 8.844000 9.629000 [ Last edited by xk6891 on 2011-3-20 at 13:25 ] |
| 24 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 材料專碩306英一數(shù)二 +8 | z1z2z3879 2026-03-16 | 10/500 |
|
|---|---|---|---|---|
|
[考研] 考研求調(diào)劑 +3 | 橘頌. 2026-03-17 | 4/200 |
|
|
[考研] 268求調(diào)劑 +8 | 一定有學(xué)上- 2026-03-14 | 9/450 |
|
|
[考研] 302求調(diào)劑 +9 | 負(fù)心者當(dāng)誅 2026-03-11 | 9/450 |
|
|
[考研] 化學(xué)工程321分求調(diào)劑 +11 | 大米飯! 2026-03-15 | 14/700 |
|
|
[考研] 【0856】化學(xué)工程(085602)313 分,本科學(xué)科評估A類院;瘜W(xué)工程與工藝,誠求調(diào)劑 +7 | 小劉快快上岸 2026-03-11 | 8/400 |
|
|
[考研] 機械專碩325,尋找調(diào)劑院校 +3 | y9999 2026-03-15 | 5/250 |
|
|
[考研] 285求調(diào)劑 +6 | ytter 2026-03-12 | 6/300 |
|
|
[考研] 材料與化工 323 英一+數(shù)二+物化,一志愿:哈工大 本人本科雙一流 +4 | 自由的_飛翔 2026-03-13 | 5/250 |
|
|
[考研] 復(fù)試調(diào)劑 +3 | 呼呼?~+123456 2026-03-14 | 3/150 |
|
|
[考研] 一志愿哈工大材料324分求調(diào)劑 +5 | 閆旭東 2026-03-14 | 5/250 |
|
|
[考研] 學(xué)碩285求調(diào)劑 +13 | Wisjxn 2026-03-12 | 46/2300 |
|
|
[考研] 招收0805(材料)調(diào)劑 +3 | 18595523086 2026-03-13 | 3/150 |
|
|
[考研] 337一志愿華南理工0805材料求調(diào)劑 +7 | mysdl 2026-03-11 | 9/450 |
|
|
[考研] 一志愿中科院,化學(xué)方向,295求調(diào)劑 +4 | 一氧二氮 2026-03-11 | 4/200 |
|
|
[考研] 求材料調(diào)劑 085600英一數(shù)二總分302 前三科235 精通機器學(xué)習(xí) 一志愿哈工大 +4 | 林yaxin 2026-03-12 | 4/200 |
|
|
[碩博家園] 085600 260分求調(diào)劑 +3 | 天空還下雨么 2026-03-13 | 5/250 |
|
|
[考研] 310求調(diào)劑 +3 | 【上上簽】 2026-03-11 | 3/150 |
|
|
[考研] 材料專碩350 求調(diào)劑 +4 | 王金科 2026-03-12 | 4/200 |
|
|
[考研] 328化工專碩求調(diào)劑 +4 | 。,。,。,。i 2026-03-12 | 4/200 |
|