如何使用if语句将句子转换为莫尔斯码

时间:2017-01-23 02:54:42

标签: fortran gfortran

这是我的程序示例。我包括其他if语句中所有字母的陈述。继续之前的10是第4和第5列。

我得到的第一个错误是Invalid radix specifier "or" at (2) for typeless constant at (1),其中2是OR中的O,1是" A"中的第一个引号," B&#34 ;等等。

第二个错误是说同样的事情,但是在" a"," b"等等的第二个引号中有1个。

我的第三个也是最后一个错误是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

1 个答案:

答案 0 :(得分:0)

程序中存在许多语法错误。您的DO循环缺失i = 1。你需要把它放在IF和ELSE IF语句之后。逻辑OR是.OR。每个OR'd项必须是表达式(x == a .OR.y == c)not(x == a .OR.c)。您需要使用和END IF终止IF-ELSE-THEN块。并且您的程序必须以END结束。

$ locale
LANG=fr_FR.UTF-8
LANGUAGE=
LC_CTYPE=fr_FR.UTF-8
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=

$ node -pe process.versions.icu 
57.1