Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы программирования на FORTRAN (ФОРТРАН)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330

Открыть новую тему     Написать ответ в эту тему

akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаются все вопросы, связанные с программированием на ФОРТРАН, как общего так и конкретного характера.
Постарайтесь дать как можно больше информации о возникшей проблеме -- это в конце концов в ваших же интересах чтобы вам помогли...

прежде чем просить помощи в задании
платное решение задач

ресурсы этого топика
ссылка на подборку ресурсов, собранных посетителями этого форума
 
то, чем мы решили поделиться
ссылка на страничку программ etc собственного изготовления, которыми любезно делятся наши форумчане


если вам вдруг не отвечают или ответ вас не устраивает
и вообще полезно прочитать всем спрашивающим
 
просьба к пишущим и отвечающим все большие листинги оформлять тегом more
и отключать графические смайлики при размещении фортран-кода

Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 18:11 14-01-2007 | Исправлено: akaGM, 09:47 01-03-2020
FuzzyLogic



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 Хотя прошло больше 30-и лет а реализация (еще с БЭСМ-6!) не устарела и конкурентна с другими, новомодными языками.

А это в общем и не удивительно, учитывая ресурсы которые были тогда ... считали каждый байт используемой памяти, каждый цикл процессора. Новомодные языки обычно имеют более сложную структуру и оперируют на более высоком уровне, а посему в принципе не должны работать быстрее

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 19:54 03-10-2007
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
братцы...
есть язык, есть конкретная реализация на конкретной платформе, а есть прослойка между клавиатурой и компьютерным креслом...

Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 20:32 03-10-2007 | Исправлено: akaGM, 20:33 03-10-2007
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Eugeen

Цитата:
Хотя прошло больше 30-и лет а реализация (еще с БЭСМ-6!) не устарела и конкурентна с другими, новомодными языками.

Это смотря в каком смысле конкурентна.
Если по скорости - вполне возможно (только надо еще посмотреть, как там с оптимизацией под 64-х битные процы и их расширения).
Если по удобству создания программ - сомневаюсь - тот же фиксированный формат - то еще убожество - на свободном писать гораздо проще.
Опять же в фортране много недоделанных фич (видимо была надобность - делали, потом передумали и недоделали).

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 16:40 04-10-2007
Aspirine22

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребят помогите пожалуйста решить вот такую задачу на фортране.
 
"Напишите программу сложения 2-х длинных чисел одинаковой длины.
 
Входные данные  
Строка с числом N <= 1000 - количество цифр в 1 числе.
Строка с N числами, каждое из которых <10, - цифры 1-го числа.
Строка с числом N <= 1000.
Строка с N числами, каждое из которых <10.
Первая цифра обоих чисел отлична от 0. "
 
И если можно то поподробней, я в нём не очень секу.

Всего записей: 4 | Зарегистр. 04-10-2007 | Отправлено: 16:56 04-10-2007
Eugeen



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
только надо еще посмотреть, как там с оптимизацией под 64-х битные процы и их расширения

 А как разрядность процессора повлияет на п/п которую я приложил? Какая строка или оператор у Вас вызывает сомнение в оптимальности для 64-х бит?

Цитата:
Опять же в фортране много недоделанных фич  

Интересно, каких? Я знаю что из фортрана повыбрасывали много полезного, нпример операторы внутреннего ввода-вывода ENCODE и DECODE.
 

Цитата:
Если по удобству создания программ - сомневаюсь - тот же фиксированный формат - то еще убожество - на свободном писать гораздо проще.

Фиксированный формат - тяжелое наследие ИмпериализЬЬьма!
Кроме перфокарт тогда ничего лучше не было. А перфоленты (тяжелое наследие Социализьььма!) были просто каторгой!
Но сейчас ведь нет проблем?
 
 

Всего записей: 232 | Зарегистр. 24-07-2005 | Отправлено: 18:05 04-10-2007
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а уж сколько дерьма добавили...
по мне, так кроме строк переменной длины (2003) и MATRIX (90-95) ничего нового не нужно...
ну операторные блоки (while, do-enddo, cycle-exit) и модульность, конечно, кул...
а ООП на фортране... дань моде и не более того...
 
Aspirine22
может и помогут, если поймут твою задачу...
я вот, например, ни фига не понял...

Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 18:54 04-10-2007 | Исправлено: akaGM, 18:55 04-10-2007
Andrew10

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
а уж сколько дерьма добавили...
по мне, так кроме строк переменной длины (2003) и MATRIX (90-95) ничего нового не нужно...
ну операторные блоки (while, do-enddo, cycle-exit) и модульность, конечно, кул...
а ООП на фортране... дань моде и не более того...
 

 
+ динамически распределяемые массивы

Всего записей: 780 | Зарегистр. 26-02-2005 | Отправлено: 18:59 04-10-2007
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
о да! позор мне, забыл...
 
и CRAY POINTERS!
поинтеры люблю...

Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 19:14 04-10-2007
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aspirine22

Цитата:
"Напишите программу сложения 2-х длинных чисел одинаковой длины.

Задачки такого рода (когда берут число преизрядной длины и складывают с таким же длинным) очень любят на Паскале задавать, это там почти стандартное заданьице. Может, у паскальщиков спросить (или поискать), а потом пеписать на фортран?

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 23:27 04-10-2007
Aspirine22

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPEHOMETP
В том то и дело, что  тяжело мне пока на нём писать. Хочу глядеть так сказать воочию, так и понимание языка должно прийти.

Всего записей: 4 | Зарегистр. 04-10-2007 | Отправлено: 09:15 05-10-2007
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Так сформулировать нормально свою задачу можно? Пока что понял первую часть: нужно сложить два числа одинаковой длины, причем очень большой длины. Пусть они оба (эти числа) записаны в файле в десятичном представлении. Задача в идеале  сводится к следующему:
 
1) Прочитать оба числа из файла, поместить в строковые переменные;
2) Сравнить их длину (а то ведь ясно сказано: "Напишите программу сложения 2-х длинных чисел одинаковой длины");
3) Проверить, не являются ли они вдруг отрицательными;
4) Проверить, не являются ли нулем их первые цифры. В условии сказано, что не являются, но мы проверим, и если найдем ноль, дальше возиться не будем, т.к. введенные числа не удовлетворяют условию задачи. И если они разной длины, мы это дело тоже проигнорируем по той же причине. И выдадим соответствующее сообщение.
5) Далее - собственно сложение. Типичный для задач по Паскалю алгоритм сложения длинных-длинных чисел - это реализовать поразрядное сложение в столбик. Т.е. справа налево читаются значки, чтоящие в одинаковых позициях обоих чисел, (а числа-то записаны как строки, последовательности ASCII-кодов), ASCII-значки переводятся в целые числа, они складываются, и добавляется (если надо, об этом чуть ниже) единичка, оставшаяся от предыдущего сложения. Последняя цифра суммы переводится в ASCII-код и заносится в соответствующую позицию результата (который у нас тоже строка). Если сумма > 10, то при сложении по следующим позициям нужно к результату добавлять единичку. Если одно из чисел отрицательное, стало быть, надо складывать его циферки, домножая на -1.
 
У меня пока нет времени с этим возиться, может, по-позже что-нибудь изображу.
 
З.Ы.: Да, еще хорошо бы проверить, все ли значки в записи прочитанных исходных чисел являются цифрами, если туда понаписали буковок и прочий мусор, работать откажемся!
 
З.З.Ы: Не, с возможностью отрицательных чисел - это слишком сложно будет, пускай буждут только положительными!

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 11:21 05-10-2007 | Исправлено: XPEHOMETP, 11:30 05-10-2007
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Eugeen

Цитата:
А как разрядность процессора повлияет на п/п которую я приложил? Какая строка или оператор у Вас вызывает сомнение в оптимальности для 64-х бит?  

Ну уж мерять оптимальность на основании только одной задачи - абсурд.
Делать реверсинжиниринг Вашего кода для того, чтобы понять, что это за задача такая решается и как ее можно оптимизировать, времени нет, уж извините.
 

Цитата:
Интересно, каких?

Когда-то писал про это в этой теме.
 

Цитата:
Фиксированный формат - тяжелое наследие ИмпериализЬЬьма!  

Это все понятно - тогда такое решение видимо было верхом удобства (из-за перфокарт).
Но перфокарты давно ушли, а код в этом формате все еще часто встречается
 

Цитата:
Но сейчас ведь нет проблем?

Проблемы с работой с таким готовым кодом никуда не делись.
А в остальном все хорошо
 
Добавлено:
akaGM

Цитата:
а ООП на фортране... дань моде и не более того...

Ну вообще некоторые вещи так и тянет на ООП сделать.
Ну или у меня задачи/наклонности неправильные
 
Andrew10

Цитата:
+ динамически распределяемые массивы

Я вообще удивляюсь, почему они не такие по умолчанию
Любая более-менее сложная задача уже не очень вписывается в статику.
По крайней мере пока студентов учил, чуть ли не сразу давал как шаблон использование динамики вместо статики, так как так решения получались логичнее...
 
Добавлено:
XPEHOMETP
Все таки я бы рекомендовал реализовывать все это начиная с пункта 5 (уж начинающему-то точно, а то на 3-м - 4-м пунктах энтузиазм пройдет, а задача еще не решена) подготовив для этого правильные данные, а потом уже прикручивать проверки.

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 14:12 05-10-2007
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KChernov

Цитата:
Ну или у меня задачи [ ] неправильные

плюнь тому в лицо кто так думает...
 

Цитата:
Ну вообще некоторые вещи так и тянет на ООП сделать

тоже от задачи зависит, что-нибудь монструозно-расширяемое делать, наверное, подойдёт, а так... я вот структурами ограничился...
реюзинг и читабельность улучшились, быстродействие не пострадало и то ладно...
 
Eugeen
возвращаясь ещё раз к твоему коду на С:
у тебя в файле prop.h наверняка написано вот это:

Код:
 
struct {
 float var, tau, ro;
 int jdt , jdr;
} propty;
 

а работа со структурами немного отличается от работы с отдельными переменными и массивами...
 
если бы ты сделал полный аналог своего Ф-кода, а именно глобальные переменные,
вот так:

Код:
 
// prop.h
 float var, tau, ro;
 int jdt , jdr;
 

и убрать обращение с квалификатором propty. в самой программе, то
может быть всё немного ускорилось бы...

Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 14:48 05-10-2007 | Исправлено: akaGM, 20:54 05-10-2007
Mr Nobody



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KChernov

Цитата:
Это все понятно - тогда такое решение видимо было верхом удобства (из-за перфокарт).  
Но перфокарты давно ушли, а код в этом формате все еще часто встречается  

Но ведь удобство то осталось.

Цитата:
Ну вообще некоторые вещи так и тянет на ООП сделать.  
Ну или у меня задачи/наклонности неправильные  

Если так, то пожалуйста С++. Лично я не могу представить вычислительный алгоритм, для реализации которого потребовалась ООП!
 
 

Всего записей: 350 | Зарегистр. 19-09-2007 | Отправлено: 17:25 05-10-2007
Eugeen



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mr Nobody

Цитата:
Но ведь удобство то осталось.  

 
Эх, плохо Вы ВСЕ?! понимаете!
Удобство состояло в том, что на перфокарты с вашего кривого листочка с текстом набивали девочки-"дырявочки" (так их звали), а вы потом забирали колоды карт и несли в машзал другим девочкам на отладку. Пока все это происходило у вас было время покурить, покалякать с корешами, покадриться с "дырявочками" и уж потом разглядывать листинг с ошибками. А нонче все приходится делать самому - стучать по клавишам, зыркать на экран, портить глаза и нервы и тп. и тд. И нет "дырявочек" рядом и коршей нет и жена рычит на каждую сигарету!
С тоской вспоминаю фиксированный формат.
 

Всего записей: 232 | Зарегистр. 24-07-2005 | Отправлено: 23:04 05-10-2007 | Исправлено: Eugeen, 23:05 05-10-2007
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Eugeen
ага, и вода была мокрее и бабы моложе...
ты тоскуешь не о перфокартах (мы до сих пор на них торты жрём), а о том что их обрамляло...
 
на письмо-то моё, что повыше, глянь, я дело говорю...

Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 23:29 05-10-2007
Eugeen



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
на письмо-то моё, что повыше, глянь, я дело говорю...

Структура propty это COMMON /propty/ в фортрановских модулях.
Через него идет связь еще с 26 подпрограммами.
Из этих 26-и две критичных по времени выполнения. Проверено, что при передаче параметров через формальные параметры (каламбур!?) сабрутин, общее время только растет, т.к. через  COMMON параметры достаются "бесплатно", а в ином случае их при каждом вызове каждой из 26 сабрутин надо формировать! Ихде тута выйгрыш?
В современном Фортране одно и тоже действие можно осуществлять разными операторами, но меня в детстве учили, что чем примитивнее набор операторов, тем эффетивней работает программа. Поэтому я пользуюсь GO TO и  CONTINUE вместо DO и While. Все словеса разработчиков трансляторов о том, что они за меня оптимизируют мой код - фуфло! Поэтому я пишу A=B*B  а не  A=B**2, C=D+D а не   C=2.*D.  И схему Горнера сам программирую. А чем короче оператор, тем лучше. А для коротких операторов поле в 72 байта даже слишком большое, так что никакого неудобства от фиксированного формата я не испытываю.
Если же нужно показать "парадный листинг" программы со всякими лесенками операторов - беру FORtoC  и показываю эти лесенки в свободном формате.

Всего записей: 232 | Зарегистр. 24-07-2005 | Отправлено: 07:52 06-10-2007
Mr Nobody



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Eugeen

Цитата:
А для коротких операторов поле в 72 байта даже слишком большое, так что никакого неудобства от фиксированного формата я не испытываю.  

Конечно, фикс. формат удобнее свободного, но как я понимаю, фикс. формат был введен не из-за перфокарт, а для упрощения компилятора.
Вы можете мне объяснить, зачем для задач, для решения которых предназначен Фортран, нужно ООП?

Всего записей: 350 | Зарегистр. 19-09-2007 | Отправлено: 12:00 06-10-2007
Aspirine22

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPEHOMETP
 Вот что у меня получилось, только не работает она совсем.
И ксатете, не нужно делать проверку на длину чисел, ты сам её в файле задаешь, и они всегда одинаковые.

Цитата:
 Lab_F1  #1152
      ! Mashkov K.V.
      ! 1102
      !     
 
      Program Prim1
      Implicit NONE
 
        INTEGER A,B,C ar(300), ar2(800), ar3(800),k,N
 
        OPEN(2,FILE='output.txt')
      WRITE(2,*) '#1152'        ! пример вывода текста на экран
      WRITE(2,*) 'Mashkov K.V.'    
      WRITE(2,*) '1102'    
      WRITE(2,*)     
      WRITE(2,*)    
 
 
        OPEN(1,FILE='input.txt')
        READ(1,*) A
      READ(1,*) (ar(k),k=A,1,-1)
      READ(1,*) B
      READ(1,*) (ar2(k), k=B,1,-1)
      
     If (A>B) Then
       N=A
     Else  
       N=B
     End If
 
     Do K=1,N
        ar3(K)=ar3(k)+ar(k)+ar2(k)
        If(ar3(k)>9) Then
          ar3(k+1)=1+ar3(k+1)
          ar3(k)=ar3(k)-10
        End If
       End DO
 
     If (ar3(k+1)>0) Then
        k=k+1
     End If
 
       WRITE(2,*) k
       WRITE(2,10) (ar3(k), k=N,1,-1)
 
       
    END                            
 

Наверное я что-то не правильно написпал. Подскажи плиз

Всего записей: 4 | Зарегистр. 04-10-2007 | Отправлено: 15:55 06-10-2007
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Eugeen

Цитата:
Структура propty это COMMON /propty/ в фортрановских модулях.

слава богу, я знаю что такое коммон-блоки...
этот блок общий и для С? тогда забудь о своём С-коде, ничего ты там по сравнению с Ф не ускоришь...

Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 15:59 06-10-2007 | Исправлено: akaGM, 16:03 06-10-2007
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы программирования на FORTRAN (ФОРТРАН)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru