| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Fortran > [General] ругается компилятор g77 |
| Автор: Elfebet 10.4.2008, 09:19 | ||
пишу код
компилятор g77 ругается на условие сравнение: говорит что типы не соответствуют, хотя этот кусок кода давным-давно был написан и писался под fortran 77, подскажите пожалуйста как мне исправить эту ошибку? p.s. хотя компилировал эту часть под компилятор fortran90 - ошибок необнаружило. Помогите пожалуйста. |
| Автор: FatalError 14.4.2008, 22:55 | ||||
| Элементарно, Ватсон! Во-первых, тип массива c(i) не задан. Далее, во-вторых, не используется сакраментальная фраза IMPLCICT NONE - а g77 ее понимает. Она запрещает неявное описание типов переменных. Т.е. когда переменная (ранее не описанная) попадается в тексте, то компилятор считает, что это ее неявное описание, и приписывает ей определенный тип (как в Бейсике). В Фортране принят такой принцип неявного описания - по первой букве переменной:
Соответственно, строка dimension c(120) по этим правилам означает задание массива типа REAL. А потом эти дробные числа в программе пытаются сравнивать с символами (Character Constants). Понятное дело, любой нормальный компилятор будет ругаться. Переделать можно так:
Если, конечно, я правильно понял, что там в массиве все элементы по одному символу. Только при вводе их придется писать через пробел или запятую, примерно так: 1 4 6 n 7 . 3 9 . n 3 ..... Это следует из записи оператора чтения. Если надо прочитать некое длинное слитно написанное число вроде 4856763.68673434, так, чтобы распихать его знаки по массиву, этот способ не сработает. Надо читать все число целиком в одну переменную, а потом резать на 120 кусочков. |
| Автор: Elfebet 15.4.2008, 09:55 |
| Хм... интересно, спасибо, попробую. Но факт в том что мне дали исходник на фортране 77 и там было так написано. Может быть по правилам неявного описания сначала идет тип BYTE или CHARACTER? |
| Автор: FatalError 15.4.2008, 10:49 |
| Нету там никаких BYTE, всё неявное описание в стандарте Фортрана77 - это те три строчки, которые я приводил (взято из книжки Clive G. Page, Professional Programmer's Guide to Fortran77). Правда, никто не гарантирует, что в каком-то компиляторе не были введены нестандартные расширения, типа, начинается с буквы "с" - значит, CHARACTER! |