2017-01-23 34 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