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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
и отключать графические смайлики при размещении фортран-кода

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
warever
SLATEC
 
Добавлено:
по второму вопросу -- запускай на исполнение не под отладчиком, Ctrl-F5

Всего записей: 733 | Зарегистр. 06-12-2003 | Отправлено: 11:38 30-11-2011
XPEHOMETP

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

Цитата:
А то, я что-то написал, программа скомпилировалась, консоль выскочила и сразу спряталась, а как результат-то посмотреть?

B Фортране была когда-то такая функция: PAUSE. Исключена из стандарта в Ф-95, но, по идее, будет еще долго поддерживаться для совместимости со старым кодом. В FTN95 есть собственный вариант: PAUSE@, выдает на-гора MessageBox

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 11:52 30-11-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
warever
без всяких стандартов...
запускай из-под ФАРа...

Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 12:13 30-11-2011 | Исправлено: akaGM, 13:08 30-11-2011
OlGu

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

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

 
это потому, что в начале файла нужно указывать сколько будет данных (zone i), а я изначально не могу сказать сколько в моём алгоритме будет шагов по времени.
 

Цитата:
или не заморачивайся ни с чем, а делай по рабоче-крестьянски:  
 
Код:
  write(101,fmt="(a16)", rec=1) 'variables = x, u'    
  write(*,*)  
  write(101,"(a9,i6)", rec=2) 'zone i = ', 2  
  write(*,*)  
  write(101,fmt="(f16.8,3X, f16.8)", rec=3) x1, u1  
  write(*,*)  
  write(101,fmt="(f16.8,3X, f16.8)", rec=4) x2, u2  
  write(*,*)  
 
 

 
не, так у меня в терминале только строку пропускает, а в файле всё слитно..

Всего записей: 6 | Зарегистр. 17-11-2011 | Отправлено: 13:20 30-11-2011
terminat0r



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

Цитата:
посчитать собственные числа (вектора не нужны) произвольной вещественной  матрицы

karakurt2

Цитата:
SLATEC  

 
В принципе верно ,но если быть точнее то это EISPACK и он полностю перекрыт LAPACK-ом кажется
Поэтому я бы добавил:
 
warever
Проблема стандартная, но зависит от "произвольности " вашей матрицы,  если она плотная то можно взять lapack, или его оптимизированые версии Intel MKL, ACML  
А дальше см например здесь , здесь
Если матрица большая и разреженная то смотреть в сторону ARPACK или что-то похожее

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 15:18 30-11-2011
akaGM

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

  write(101,fmt="(a16)", rec=1) 'variables = x, u'    
  write(101,*)  
  write(101,"(a9,i6)", rec=2) 'zone i = ', 2  
  write(101,*)  
  write(101,fmt="(f16.8,3X, f16.8)", rec=3) x1, u1  
  write(101,*)  
  write(101,fmt="(f16.8,3X, f16.8)", rec=4) x2, u2  
  write(101,*)

 

Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 15:43 30-11-2011
terminat0r



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

Цитата:
это потому, что в начале файла нужно указывать сколько будет данных (zone i), а я изначально не могу сказать сколько в моём алгоритме будет шагов по времени.  

 
Очень большие файлы? Возможно проще прочитать еще раз, посчитать шаги и записать в новый файл?
 
Или вызвать системой обычный sed  или awk когда надо?

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 15:50 30-11-2011
plazmon



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

Цитата:
Есть ещё одна неприятность. Не пойму как сделать так, чтобы консоль не закрывалась сразу после того, как программа скомпилируется. А то, я что-то написал, программа скомпилировалась, консоль выскочила и сразу спряталась, а как результат-то посмотреть? Пользуюсь Visual studio и FTN95 express

Добавить в конец программы

Код:
 
WRITE(*,*)  'Pres Enter to exit'
READ(*,*)
 

и программа по завершению будет ждать нажатия энтера.
 

Всего записей: 107 | Зарегистр. 29-05-2007 | Отправлено: 17:17 30-11-2011
terminat0r



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OlGu
Кстати о Tecplot-e, немного не то что вам нужно, но если не видели то будет интересно
http://people.sc.fsu.edu/~jburkardt/data/tec/tec.html

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 18:11 30-11-2011
FuzzyLogic



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

Цитата:
это потому, что в начале файла нужно указывать сколько будет данных (zone i)

А можно нескромный вопрос? Оно вам действительно надо? Я конечно не знаю чего вы там рисуете но судя по примеру что вы привели его можно оттуда спокойно убрать и писать обыкновенный текстовый файл.

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 21:51 30-11-2011
OlGu

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

Цитата:
write(101,fmt="(a16)", rec=1) 'variables = x, u'      
  write(101,*)    
  write(101,"(a9,i6)", rec=2) 'zone i = ', 2    
  write(101,*)    
  write(101,fmt="(f16.8,3X, f16.8)", rec=3) x1, u1    
  write(101,*)    
  write(101,fmt="(f16.8,3X, f16.8)", rec=4) x2, u2    
  write(101,*)

 
так я тоже пробовал, говорит не может он без указания номера записи
 
terminat0r

Цитата:
Очень большие файлы? Возможно проще прочитать еще раз, посчитать шаги и записать в новый файл?  
 
Или вызвать системой обычный sed  или awk когда надо?

 
да не очень большие, порядка 10000 записей, но всё же это лишняя работа ведь, учитывая что рабочий вариант akaGM уже предложил:
 

Цитата:
character*2 CRLF  
parameter (CRLF=char(13)//char(10))  
write(101,fmt="(f16.8,3X, f16.8, a2)", rec=3) x1, u1, CRLF

 
который вроде работает и на linux и на Windows
Вообще мне просто пришлось предоставлять данные в таком виде для соучастия в статье, а так я всегда записывал их в обычный txt, как предложил FuzzyLogic,
 и рисовал гнуплотом
 
Спасибо всем за советы!

Всего записей: 6 | Зарегистр. 17-11-2011 | Отправлено: 10:31 01-12-2011
FuzzyLogic



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

Цитата:
 и рисовал гнуплотом

Просто я почему спросил ... у TecPlot тот самый I= в zone он необязателен, а нужен только в определённых условиях, а так он сам успешно посчитает кол-во записей пока не встретит следующую zone

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 10:47 01-12-2011
plazmon



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

Цитата:
так я тоже пробовал, говорит не может он без указания номера записи

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

Всего записей: 107 | Зарегистр. 29-05-2007 | Отправлено: 18:17 01-12-2011
Punk18



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, требуется помощь. Нужно в ниже написанном калькуляторе поставит запрет деления на 0. Заранее спасибо!
     
Цитата:
 Program Task1
       real a,b,c
       character dei,vib
   2   print*,'Введите переменную a'
       read*,a
       print*,'Введите переменную b'
       read*,b
       print*,'Выберете действие(+,-,/,*,^[a**b])'
       read*,dei
       if(dei .eq. "+")then
       c=a+b
       print*,'c=a+b',c
       else
       endif
       if(dei .eq. "-") then
       c=a-b
       print*,'c=a-b',c
       endif
       if(dei .eq. "\") then
       c=a/b
       print*,'c=a/b',c
       else
       endif
       if(dei .eq. "*") then
       c=a*b
       print*,'c=a*b',c
       else
       endif
       if(dei .eq. "^") then
       c=a**b
       print*,'c=a^b',c
       endif
   7   print*,'Для выхода нажмите x'
       print*,'Для нового расчета нажмите n'
       read*,vib
       if(vib .eq. "n") then
       goto 2
       else
       goto 4
       endif
   4   if(vib .eq. "x") then
       goto 3
       else
       print*,'Не верная команда'
       goto 7
       endif
   3   end

Всего записей: 12 | Зарегистр. 23-05-2009 | Отправлено: 15:20 02-12-2011 | Исправлено: Punk18, 15:35 02-12-2011
terminat0r



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос не по фортрану но "перпендикулярно" к нему
 
Есть у меня один xml файл. И надо бы мне отсортировать его items алфавитно (сам xml файл а не данные с него) по string что в <match>...</match> находится.
Дело в том что есть одна программа(не буду тыкать пальцем пока), которая читает этот файл но в ней нет сортировки- как читает этот файл так и показывает данные. Надо бы ей помочь
Пример  здесь Подробнее...
 
Какой бы такой xml парсер взять что бы попроще потом отсортировать (и может ненадо мне вообще парсера в этом случае, разобрать на itemы потом отсортировать ?)
 
Добавлено:
Punk18
Проще наново написать чем этот столбик goto читать, lol
Опять шестидесятники студентов мучают?
 
Хотя вот  

Код:
      ...
       if(dei .eq. "\") then
         if(b<tiny(b)) then
         print*,'Деление на нуль'  
         goto 3
         else
       c=a/b
         endif
       ....  

Если преподаватель заерзает и скажет что неправильно то подсунуть ему надо
 

Код:
      ...
       if(dei .eq. "\") then
         if(b .eq. 0.0) then
         print*,'Деление на нуль'  
         goto 3
         else
       c=a/b
         endif
       ....  

Хотя у меня бы с таким кодом вы до весны с зачеткой бегали
Кстати, интересное форматирование кода, сами делали, чтоб красиво было? lol

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 16:12 02-12-2011 | Исправлено: terminat0r, 16:42 02-12-2011
Punk18



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
terminat0r спасибо за помощь помогло, решил переделать, вот:
 

Цитата:
      PROGRAM kalc
10    print*, 'vvedite x i y'
      read*, x,y
      if(x .lt. 0)then
      x=x*(-1)
      end if
      if(y .lt. 0)then
      y=y*(-1)
      end if
      print*, 'vvedite: 1(x+y),2(x-y),3(x*y),4(х/у),5(x**y)'
      read*, z
      if (z.eq.1) print*, x+y
      if (z.eq.2) print*, x-y
      if (z.eq.3) print*, x*y
      if (z.eq.4) then
       if (y.eq.0) then
       print*, 'delit na 0 nelza'
       else
       print*, x/y
       end if
      end if
      if (z.eq.5) then
       if(x.le.O) then
       print*, 'oshibka'
       else
       print*, x**y  
        end if
      end if
      print*, 'Vvedite 1 ili 2 dla vhoda vyhoda'
      read*, metki
      if(metki.eq.1) goto 10
      if(metki.eq.2) goto 11
11    end

 
Но тут теперь новая проблема при возведении отрицательного числа в степень минус теряется:
 

Цитата:
 vvedite x i y
-2.1e3 .50
 vvedite: 1(x+y),2(x-y),3(x*y),4(х/у),5(x**y)
5
   45.82576

 

Всего записей: 12 | Зарегистр. 23-05-2009 | Отправлено: 13:37 03-12-2011
KChernov



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

Цитата:
при возведении отрицательного числа в степень минус теряется

Судя по коду, там вообще отрицательные числа в степень не должны возводиться.
Разве что тут действительно вместо нуля переменная (где же спасительный implicit none ?)
Цитата:
 if(x.le.O) then  

 
 
Добавлено:
Не посмотрел сразу весь код - там в начале все делается неотрицательным.

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 14:51 03-12-2011
XPEHOMETP

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

Цитата:
где же спасительный implicit none ?

Судя по нижнему регистру и фиксированной форме записи, это Ф-77 под g77. Который не только implicit none понимает, но и select case, кажись. Тут бы весьма пригодилось...

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 07:30 05-12-2011
KChernov



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

Цитата:
Судя по нижнему регистру и фиксированной форме записи, это Ф-77 под g77.

Ну я тоже в нижнем обычно пишу, только сложные идентификаторы разбавляю и константы капсом.
А то, что без отступов - так это не факт, что из-за фиксированного формата.
Да и вряд ли их именно в 77 заставляют писать (а если заставляют - самое то спросить зачем).

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 08:55 05-12-2011
XPEHOMETP

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

Цитата:
Да и вряд ли их именно в 77 заставляют писать (а если заставляют - самое то спросить зачем).

Скорее всего, заморочки с лицензией. Про бесплатный g77 еще когда-то услышали, а вот про бесплатный g95 еще не удосужились. Или до сих пор не успели Ф90-95 освоить.

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 11:40 05-12-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 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