2017-01-23 39 views
-1

這是我的程序的一個示例。我還包括如果在字母表中的所有字母的陳述。還有繼續之前的10列在第4和第5列。如何使用if語句將句子轉換爲摩爾斯碼

我得到的第一個錯誤是說Invalid radix specifier "or" at (2) for typeless constant at (1),其中2是OR中的O,1是「A」,「B」等中的第一個引號。

第二個錯誤是說同樣的事情,但與1是在「一」第二個報價,「b」等

我的第三和最後的錯誤是說Invalid form for ELSE IF statement at (^)與胡蘿蔔幸福在每個陳述結束時。

我假設這些都與我使用If,ELSE IF和DO的錯誤語法的事實有關;但搜索互聯網並沒有幫助我找到正確的語法。

program p1 

    integer j 
    integer sentenceSize 
    character sentence*72 

    print *, "Enter the size of the sentence you are converting: " 
    read *, sentenceSize 
    print *, "Enter the sentence you would like to convert: " 
    read(*,'(A)') sentence 
    DO 10, sentenceSize 
    IF (sentence(i:i) == "A" OR "a") 
    print *, ".-" 
    ELSE IF (sentence(i:i) == "B" OR "b") 
    print *, "-..." 
    ELSE IF (sentence(i:i) == 'C' OR 'c') 
    print *, "-.-." 
    ELSE IF (sentence(i:i) == "D" OR "d") 
    print *, "-.." 
    print *, " " 
10 continue 
+0

你*真的*無法找到正確的語法,如果在互聯網上的fortran'if'和'do'? – Ross

回答

0

程序中有很多語法錯誤。您的DO循環缺少i = 1。您需要在IF和ELSE IF語句之後放置THEN。邏輯OR是.OR。每個OR'd項目必須是一個表達式(x == a .OR。y == c)not(x == a .OR。c)。您需要用END IF終止IF-ELSE-THEN塊。你的程序必須以END結束。

program p1 

    integer j 
    integer sentenceSize 
    character sentence*72 

    print *, "Enter the size of the sentence you are converting: " 
    read *, sentenceSize 
    print *, "Enter the sentence you would like to convert: " 
    read(*,'(A)') sentence 
    DO 10 i=1, sentenceSize 
    IF (sentence(i:i) == "A" .OR. sentence(i:i) == "a") THEN 
    print *, ".-" 
    ELSE IF (sentence(i:i) == "B" .OR. sentence(i:i) == "b") THEN 
    print *, "-..." 
    ELSE IF (sentence(i:i) == 'C' .OR. sentence(i:i) == 'c') THEN 
    print *, "-.-." 
    ELSE IF (sentence(i:i) == "D" .OR. sentence(i:i) == "d") THEN 
    print *, "-.." 
    END IF 
    print *, " " 
10 continue 
END 
+0

非常感謝。我以前從未使用過Fortran。我幾乎立刻就意識到了THEN的錯誤,但無法在.OR上找到語法。 – C0UG3R

+0

我會建議一個功能,以大寫或小寫的方式。您最後可能需要一個ELSE來「吠出」任何未定義的文本。 – Holmz