В настоящее время я пытаюсь написать программу в Fortran 77, которая вычисляет количество слов в текстовом файле. Текстовые файлы выглядят так:Проблема с операциями if/then с символьными переменными в Fortran 77
Hello world. Привет мир. Привет мир. Привет мир. Привет мир. Привет мир. Привет мир. Привет мир. Привет мир. Привет мир. Привет мир. Привет мир. Привет мир.
Моя программа в настоящее время выглядит следующим образом:
program COUNT
implicit none
character text*100000
integer i, a, nw
nw=1 !number of words
open(9, FILE='file.txt', STATUS='old')
read(9, '(A)') text
a=0
10 do i=1, LEN_TRIM(text)
if (text(i:i) .ne. " ") then
if (a .eq. 0) then
goto 10
else
a=0
nw=nw+1
goto 10
endif
else
if (a .eq. 0) then
a=a+1
goto 10
else
goto 10
endif
endif
enddo
print *, "Number of words: ", nw
end
Я сделал это на бумаге, и она должна работать, однако, моя программа застрять в сделай петлю. Я думаю, что это может быть как-то связано с этим утверждением:
if (text(i:i) .ne. " ") then
Могу ли я написать логическое выражение таким образом? Если нет, есть ли у кого-нибудь намеки на то, как я могу переписать этот код? Извините, если моя программа немного беспорядочна; Я относительно новичок в этом. Я пытаюсь улучшить свои навыки кодирования, чтобы делать вычислительную химию. Большое спасибо за помощь!
Предлагаю изучить Fortran 95. Вы уже использовали некоторые из них: 'len_trim'. Макет источника свободной формы проще в использовании, и язык обладает многими дополнительными возможностями. См. Http://en.wikipedia.org/wiki/Fortran_95_language_features –
Вам не нужен какой-либо из ваших 10-ти минут. В качестве альтернативы, если вы хотите их, измените их на цикл (что означает переход на следующую итерацию). – cup
Я не предлагал 'cycle', bucause из Fortran 90. –