2017-03-06 33 views
0

我目前正在撰寫一個程序作爲每週作業的一部分,而且我已經打了一堵牆。這對一些人來說可能是顯而易見的,但卻讓我難堪。代碼中的各種錯誤

我的問題是,編譯器返回這些錯誤:Error Messages

我的代碼周圍起了一點嘗試和糾正自己,但運行我到其他錯誤。我不太確定頂部的INTENT(IN)定義爲什麼會以「不是一個DUMMY」變量的形式返回給我。

以及不知道如何糾正下面的實際參數錯誤。我試圖用我的變量Dial_A_InDial_A_Out等返回一個邏輯值來檢查組合,但無濟於事。

這裏是我的代碼:My Code

錯誤和相關的代碼以文本形式:

INTEGER, INTENT(IN) :: Dial_A_In , Dial_B_In , Dial_C_In 

返回錯誤:符號在(1)不爲虛擬變量。

IF (check_solution() .EQV. .TRUE.) EXIT 

返回錯誤:缺少實際參數爲參數的「a」(1)

編輯:我設法解決)呼籲check_solution(,這是一個三個整數參數字符串,可以在下面看到。

全部代碼文本:

SUBROUTINE sevensub(Dial_A_Out, Dial_B_Out, Dial_C_Out, Iteration_Count) 

USE globals_mod 


INTEGER, INTENT(IN) :: Dial_A_In , Dial_B_In , Dial_C_In 
INTEGER, INTENT(OUT) :: Dial_A_Out , Dial_B_Out , Dial_C_Out , Iteration_Count 

Iteration_Count = 0 

DO Dial_A_Out = 1, Dial_A_In, 1 

    DO Dial_B_Out = 1, Dial_B_In, 1 

     DO Dial_C_Out = 1, Dial_C_In, 1 

     WRITE(*,*) '1st Dial:', Dial_A_Out, '2nd Dial:', Dial_B_Out, '3rd Dial:', Dial_C_Out, 'Number of Iterations:', Iteration_Count 

     Iteration_Count = Iteration_Count + 1 

     IF (check_solution(Dial_A_Out, Dial_B_Out, Dial_C_Out) .EQV. .TRUE.) EXIT 

     END DO 

    IF (check_solution(Dial_A_Out, Dial_B_Out, Dial_C_Out) .EQV. .TRUE.) EXIT 

    END DO 

IF (check_solution(Dial_A_Out, Dial_B_Out, Dial_C_Out) .EQV. .TRUE.) EXIT 

END DO 

IF (check_solution(Dial_A_Out, Dial_B_Out, Dial_C_Out) .EQV. .TRUE.) THEN 

    WRITE(*,*) 'The Combination has been Found' 
    WRITE(*,*) 'It took', Iteration_Count, 'attempts' 

ELSE IF (check_solution(Dial_A_Out, Dial_B_Out, Dial_C_Out) .EQV. .FALSE.) THEN 

    WRITE(*,*) 'The Combination could not be Found' 

END IF 

END SUBROUTINE sevensub 

問題是我無法打開該模塊的源文件,看看它是什麼要求,所以這是怎樣的一個猜謎遊戲的。

+2

郵政相關的代碼,並在這裏直接的錯誤,爲文本。 – Carcigenicate

+0

INTEGER,INTENT(IN):: Dial_A_In,Dial_B_In,Dial_C_In 返回錯誤:(1)處的符號不是DUMMY變量。 IF(check_solution().EQV .TRUE。)EXIT 返回錯誤:缺少實際參數爲參數的「a」(1) 問題是我無法打開該模塊的源代碼文件,看看它是什麼呼籲,所以這是一種猜謎遊戲。 –

+3

不作爲一個混亂的評論。取而代之的是,將您的帖子放在那裏,並且可以正確格式化並輕鬆看到。 –

回答

0

將關鍵字INTENT放入變量聲明中意味着它是一個虛擬變量。

但是這個虛擬變量不在子程序的參數列表中。

你想要的可能是:

subroutine sevensub(Dial_A_In, Dial_A_Out, Dial_B_In, Dial_B_Out, & 
        Dial_C_In, Dial_C_Out, Iteration_Count) 
    use ... 
    integer, intent(in) : Dial_A_In, Dial_B_In, Dial_C_In 
    integer, intent(out): Dial_A_Out, Dial_B_Out, Dial_C_Out 
    integer, intent(out): Iteration_Count 

    ... 

end subroutine sevensub 
+0

非常感謝,我只是刷新了SO頁面,並確認了我剛寫的內容。 無法繞過我的頭爲什麼它會拋出錯誤,但我將它添加到SUBROUTINE的頂部,它還沒有拋出任何東西。 再次感謝您 –