fortran number of delete

請問如果我在作運算後會跑算出一些數據而這些數據有個範圍約(0,1)之間

但其中有幾筆是小於0或大於1在作運算時想讓寫成IF (A<0 .and A>1)時把錯誤值刪除 這個指令要怎麼使用?

然後下面可能會除到算出來的各數比如介於(0,1)又20個 但這20個裡有包含錯誤的,假設上面已經刪掉錯誤值~接下來除的時候要讓它自動總各數扣掉 該怎麼寫?

如原本總各數為N除法裡要讓她自動扣掉number of delete的數

已更新項目:

可是我說的不太夠清楚~

JACK大可能誤解我的意思了~

我現在是IF (A<0 .or A>1) nodel=( )+1

IF(A<0 .or A>1) goto99

下面會用到某數/N-a-b

而這邊的N代表總數 但因為上面那行有跳過(0.,1)以外的值

所以下面的分母N-a-b必須在扣掉上面的nodel 但這邊的nodel是該怎麼個寫法?

2 個解答

評分
  • Jack
    Lv 5
    1 0 年前
    最佳解答

    程式如下:(20 個數值是在第 5 列的 data 宣告中任意指定) program main

    implicit none

    integer na, nb, i

    real a(20), b(20), suma, sumb

    data a/0.4, 0.75, -0.1, 0.25, 0.999, 0.85, 1.23, 0.111, 0.3456, -1.5, &

    0.3333, 0.975, -0.001, 0.678, 0.64, 1.0001, 0.5625, 0.2222, 0.7125, 0.4444/

    na = 20

    suma = 0.

    write (*, "(/'There are', i3, ' numbers in the original list:')") na

    do i = 1, na

    write (*, "('A(', i2, ') =', f8.4)") i, a(i)

    suma = suma + a(i)

    end do

    write (*, "('Average of above', i3, ' numbers =', f8.5)") na, suma/float(na)

    nb = 0

    sumb = 0.

    write (*, "(/'After deletion:')")

    do i = 1, na

    if (a(i)<0. .or. a(i)>1.) cycle

    nb = nb+1

    b(nb) = a(i)

    write (*, "('B(', i2, ') =', f8.4)") nb, b(nb)

    sumb = sumb + b(nb)

    end do

    write (*, "('Total', i2, ' numbers deleted.')") na-nb

    write (*, "('Average of above', i3, ' numbers =', f8.5)") nb, sumb/float(nb)

    end執行結果:There are 20 numbers in the original list:

    A( 1) = 0.4000

    A( 2) = 0.7500

    A( 3) = -0.1000

    A( 4) = 0.2500

    A( 5) = 0.9990

    A( 6) = 0.8500

    A( 7) = 1.2300

    A( 8) = 0.1110

    A( 9) = 0.3456

    A(10) = -1.5000

    A(11) = 0.3333

    A(12) = 0.9750

    A(13) = -0.0010

    A(14) = 0.6780

    A(15) = 0.6400

    A(16) = 1.0001

    A(17) = 0.5625

    A(18) = 0.2222

    A(19) = 0.7125

    A(20) = 0.4444

    Average of above 20 numbers = 0.44513After deletion:

    B( 1) = 0.4000

    B( 2) = 0.7500

    B( 3) = 0.2500

    B( 4) = 0.9990

    B( 5) = 0.8500

    B( 6) = 0.1110

    B( 7) = 0.3456

    B( 8) = 0.3333

    B( 9) = 0.9750

    B(10) = 0.6780

    B(11) = 0.6400

    B(12) = 0.5625

    B(13) = 0.2222

    B(14) = 0.7125

    B(15) = 0.4444

    Total 5 numbers deleted.

    Average of above 15 numbers = 0.55157

  • 匿名使用者
    7 年前

    我提供免費電腦問題諮詢:02-29405818

    我只要是~電腦維修~電腦重灌~電腦問題~修電腦~重灌win7~xp重灌~都是找他們

    他們到府服務非常方便!!

    希望能幫到你

    可以跟他們聯絡看看

    評價很高...你可以試試看!!^^

    電話:02-29405818

    或者加LINE~直接線上詢問也可以!

    ID:gmepc168

    希望能幫到你

    Yahoo服務加網址

    http://tw.serviceplus.yahoo.com/booth/seller/Y0193...

還有問題?馬上發問,尋求解答。