![]() |
|
|
![]()
|
|
| Elfebet |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 545 Регистрация: 15.5.2006 Где: Украина. Запорожь е. Репутация: нет Всего: 14 |
пишу код
компилятор g77 ругается на условие сравнение: говорит что типы не соответствуют, хотя этот кусок кода давным-давно был написан и писался под fortran 77, подскажите пожалуйста как мне исправить эту ошибку? p.s. хотя компилировал эту часть под компилятор fortran90 - ошибок необнаружило. Помогите пожалуйста. Это сообщение отредактировал(а) Elfebet - 10.4.2008, 09:20 -------------------- Программист не должен всё знать... он должен знать где можно посмотреть |
|||
|
||||
| FatalError |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 11.4.2006 Репутация: нет Всего: 1 |
Элементарно, Ватсон!
Во-первых, тип массива c(i) не задан. Далее, во-вторых, не используется сакраментальная фраза IMPLCICT NONE - а g77 ее понимает. Она запрещает неявное описание типов переменных. Т.е. когда переменная (ранее не описанная) попадается в тексте, то компилятор считает, что это ее неявное описание, и приписывает ей определенный тип (как в Бейсике). В Фортране принят такой принцип неявного описания - по первой букве переменной:
Соответственно, строка dimension c(120) по этим правилам означает задание массива типа REAL. А потом эти дробные числа в программе пытаются сравнивать с символами (Character Constants). Понятное дело, любой нормальный компилятор будет ругаться. Переделать можно так:
Если, конечно, я правильно понял, что там в массиве все элементы по одному символу. Только при вводе их придется писать через пробел или запятую, примерно так: 1 4 6 n 7 . 3 9 . n 3 ..... Это следует из записи оператора чтения. Если надо прочитать некое длинное слитно написанное число вроде 4856763.68673434, так, чтобы распихать его знаки по массиву, этот способ не сработает. Надо читать все число целиком в одну переменную, а потом резать на 120 кусочков. |
||||
|
|||||
| Elfebet |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 545 Регистрация: 15.5.2006 Где: Украина. Запорожь е. Репутация: нет Всего: 14 |
Хм... интересно, спасибо, попробую.
Но факт в том что мне дали исходник на фортране 77 и там было так написано. Может быть по правилам неявного описания сначала идет тип BYTE или CHARACTER? -------------------- Программист не должен всё знать... он должен знать где можно посмотреть |
|||
|
||||
| FatalError |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 11.4.2006 Репутация: нет Всего: 1 |
Нету там никаких BYTE, всё неявное описание в стандарте Фортрана77 - это те три строчки, которые я приводил (взято из книжки Clive G. Page, Professional Programmer's Guide to Fortran77). Правда, никто не гарантирует, что в каком-то компиляторе не были введены нестандартные расширения, типа, начинается с буквы "с" - значит, CHARACTER!
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Fortran | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |