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

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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Непонятно,как задать сумму от первого до любого четного элемента,в задании выше описано.
 
 
Program lab4
    Implicit none
    Integer a(100),b(100),n,i,t
      Write (*,*)'Vvedite kol-vo elementov massiva (n<100)'
      Read (*,*) n
    Do i=1,n
        write (*,*) 'Vvedite chislo[',i,']'
        read (*,*) a(i)
        if (((i/2)*2)==i) then
    do t=1,(i-1)                  <-вот этот момент не понятен
        b(i)=((a(1)+a(t+1))*(i-1))/2
    end do    
        else
        b(i)=a(i)
        end if
        end do
         write (*,*) 'ishodniy massiv noviy massiv'
    do i=1,n
         write (*,*)     a(i)        ,    b(i)
    end do  
    end      
 

Всего записей: 12 | Зарегистр. 27-03-2008 | Отправлено: 23:14 31-03-2008
terminat0r



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Spartach01
Задание не очень точно описано,  
всех предыдущих чисел или всех предыдущих парных чисел?
если я прав понял, то так
 
program lab4  
implicit none  
integer, dimension( :) , allocatable :: a, b
    integer ::n,i,t  
      write (*,*)'vvedite kol-vo elementov massiva (n)'  
      read (*,*) n  
allocate(a(n))
allocate(b(n))
 
    do i=1,n  
        write (*,*) 'vvedite chislo[',i,']'  
        read (*,*) a(i)  
        if (mod(a(i),2)==0) then  
    do t=1,i-1                  
        b(i)=b(i)+a(t)  
    end do      
        else  
        b(i)=a(i)  
        end if  
        end do  
         write (*,*) 'ishodniy massiv noviy massiv'  
    do i=1,n  
         write (*,*)     a(i)        ,    b(i)  
    end do  
 
deallocate(a)
deallocate(b)
    end      

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 15:45 01-04-2008 | Исправлено: terminat0r, 16:30 01-04-2008
KChernov



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

Цитата:
"Дана последовательность из N целых чисел.Получить новую последователльность,которая отличается от исходной тем,что все четные члены заменены суммой предыдущих"

Не совсем понятно, о каких конкретно предыдущих идет речь - об исходных или уже замененных по этому правилу(скорее все таки первое)?
 

Цитата:
Непонятно,как задать сумму от первого до любого четного элемента,в задании выше описано.

Заводится переменная, в которой хранится текущая сумма предыдущих элементов последовательности.
В начале она равна 0.
Каждый нечетный элемент к ней просто прибавляется.
Каждый четный элемент к ней тоже прибавляется, но либо до, либо после изменения последовательности (это возвращаясь к первому вопросу) + эта переменная присваивается текущему элементу последовательности. Кроме того, в первом случае нужна временная переменная для сохранения значения текущего четного элемента, так как нельзя одновременно и присвоить новое значение текущего элемента из переменной суммы предыдущих элементов, и добавить старое значение текущего элемента к этой переменной.

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 15:57 01-04-2008
terminat0r



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

Цитата:
Не совсем понятно, о каких конкретно предыдущих идет речь - об исходных или уже замененных по этому правилу(скорее все таки первое)?

я тоже об этом подумал, но решил так же как и Вы

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 16:02 01-04-2008
KChernov



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

Цитата:
    do t=1,i-1                  
        b(i)=b(i)+a(t)  
    end do      
 

Я предпочитаю такие вещи считать постепенно, а не целиком на каждом проходе цикла.
Но это можно и оптимизацией назвать...

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Имеется ноут CoreDuo T2300 1.66GHz, 2GB оперативки.  
Имеется программа для решения дифура методом Либмана: очень много итераций, порядка миллиона.  
 
Почему-то мой ноут выполняет программу 2,5 часа, хотя настольный комп практически аналогичной конфигурации (правда с процессором Pent4 1,8 GHz и оперативкой 1 GB) решает это программу за 15 минут!  
 
Мож кто знает - что можно в ноуте оптимизировать чтобы программа на Фортране шла быстрее?  
В биосе смотрел - можно только отключить логическую поддержку 2-х ядер  
 
ЗЫ: сегодня только поставил оперативку 2 плашки по 1 GB, производительность заметно не выросла  Вот это и насторожило....  
Или судьба такая у ноутов - даже при аналогичной конфигурации с настольными - проигрывать им в производительности?

Всего записей: 15 | Зарегистр. 02-04-2008 | Отправлено: 13:45 02-04-2008
Spartach01

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
нужно написать новую последовательность,в которой КАЖДЫЙ четный член заменен суммой ВСЕХ предыдущих(ПЕРВОЙ ПОСЛЕДОВАТЕЛЬНОСТИ).
 
terminat0r,результат не получается,вот что пишет
 
 
        program lab4  
    implicit none  
    integer, dimension( , allocatable :: a, b  
        integer ::n,i,t  
        write (*,*)'vvedite kol-vo elementov massiva (n)'  
        read (*,*) n  
    allocate(a(n))  
    allocate(b(n))  
    
        do i=1,n  
           write (*,*) 'vvedite chislo[',i,']'  
          read (*,*) a(i)
          if (mod(a(i),2)==0) then  
        do t=1,i-1                  
          b(i)=b(i)+a(t)  
        end do      
          else  
          b(i)=a(i)  
          end if  
          end do  
           write (*,*) 'ishodniy massiv noviy massiv'  
        do i=1,n  
           write (*,*)     a(i)        ,    b(i)  
        end do    
 
    deallocate(a)  
    deallocate(b)  
        end      
 
         vvedite kol-vo elementov massiva (n)
     5
     vvedite chislo[           1 ]
     1
     vvedite chislo[           2 ]
     2
     vvedite chislo[           3 ]
     3
     vvedite chislo[           4 ]
     4
     vvedite chislo[           5 ]
     5
     ishodniy massiv noviy massiv
             1           1
             2  -842150450
             3           3
             4  -842150445
 
а так ты все правильно понял,я тоже понимаю,но не знаю как задать.Можете еще помочь)

Всего записей: 12 | Зарегистр. 27-03-2008 | Отправлено: 14:57 02-04-2008
terminat0r



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

Цитата:
terminat0r,результат не получается,вот что пишет

это проблема у вашего компилятора
попробуйте задать конкретный тип integer и обнулить массив b перед использованием
 
вот тот же тест у меня
./a.out
 vvedite kol-vo elementov massiva (n)
5
 vvedite chislo[ 1 ]
1
 vvedite chislo[ 2 ]
2
 vvedite chislo[ 3 ]
3
 vvedite chislo[ 4 ]
4
 vvedite chislo[ 5 ]
5
 ishodniy massiv noviy massiv
 1 1
 2 1
 3 3
 4 6
 5 5

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 17:00 02-04-2008 | Исправлено: terminat0r, 17:09 02-04-2008
Spartach01

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ВСЕ РАБОТАЕТ!!!Огромное спасибо!!!!!!!!!!!

Всего записей: 12 | Зарегистр. 27-03-2008 | Отправлено: 17:18 02-04-2008
line51

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребят, как можно сделать, чтобы программа на Фортране загружала 2 ядра?
Есть несложная программа, считающая порядка миллиона итераций: на моем CoreDuo T2300 грузится только одно ядро (смотрю через Ctrl-Alt-Del -> Быстродействие) и вследствие этого имеем невысокую производительность...

Всего записей: 15 | Зарегистр. 02-04-2008 | Отправлено: 20:33 03-04-2008
terminat0r



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

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 22:25 03-04-2008
line51

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
terminat0r
 
 
Объясните пожалуйста по-подробней, или дайте ссылочку на то, как это можно сделать! Пожалуйста!
 
Я ламер , но для написания диссера очень необходимо составить программу для обсчета дифуров. Все что мог - сделал на Фортране, но очень уж долго ждать 2,5 часа пока компьютер выполнит программу....

Всего записей: 15 | Зарегистр. 02-04-2008 | Отправлено: 22:34 03-04-2008
terminat0r



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
line51
http://en.wikipedia.org/wiki/OpenMP
http://ru.wikipedia.org/wiki/OpenMP

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 19:36 04-04-2008
line51

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
terminat0r
 
 
ОК, спасибо огромное!
А подскажи пожалуйста - какой компилятор поддерживает OpenMP?
Вот у меня сечас стоит Compaq Visual Fortran 6.0. Он не поддерживает, да?
 
Есть еще Intel Visual Fortran Compiler 8.0. Только вот нигде не могу найти информации о том, поддерживает ли он директивы OpenMP....

Всего записей: 15 | Зарегистр. 02-04-2008 | Отправлено: 18:43 05-04-2008
tig1



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для использования библиотеки OpenMP необходимо выполнять компиляцию с помощью компилятора, который распознает прагмы OpenMP. Компиляторы Intel® C++ и Fortran поддерживают OpenMP. В последнее время в большинство других компиляторов C++ и Fortran была добавлена, по крайней мере, некоторая поддержка OpenMP, так что проблем ни с одним не с другим компилятором возникнуть не должно, если, конечно, Compaq Visual Fortran 6.0 не слишком древний, потому что я уже давно не видел среди компляторов Compaq Visual Fortran ниже версий, чем v6.6...

Всего записей: 6168 | Зарегистр. 24-12-2001 | Отправлено: 12:05 06-04-2008
Andrew10

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
line51
 
Посмотрел в документации CVF 6.6.C, вот какой раздел там есть:
 
"OpenMP Fortran API Compiler Directives (TU*X only)"
 
Можно понимать так, что CVF под Windows OpenMP не поддерживает.

Всего записей: 780 | Зарегистр. 26-02-2005 | Отправлено: 14:41 06-04-2008
line51

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Andrew10
 
 
Во, посмотрел в свойствах - у меня Compaq Visual Fortran Prof Ed 6.6 C
 
Глупый вопрос - он поддерживает OpenMP? В хелпе есть описание его директив, но в реале при компиляции выдает ошибку - не понимает их....
 
Может, в настройках чего надо поменять?

Всего записей: 15 | Зарегистр. 02-04-2008 | Отправлено: 15:12 06-04-2008
Andrew10

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

Цитата:
Глупый вопрос - он поддерживает OpenMP? В хелпе есть описание его директив, но в реале при компиляции выдает ошибку - не понимает их....  

 
"(TU*X only)" в документации означает, что соответствующая опция работает только для
Tru64 UNIX® на процессорах Alpha. Значит под Windows - НЕ ПОДДЕРЖИВАЕТ.

Всего записей: 780 | Зарегистр. 26-02-2005 | Отправлено: 15:25 06-04-2008
AleksKA

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа! Как заставить работать под Vista Compaq Visual Fortran 6.6?
Инсталляция проходит, но при попытке создать приложение вылетает ошибка в модуле  
DFDEV.EXE с отсылкой к DEVDBG.PKG. Что делать??

Всего записей: 12 | Зарегистр. 25-11-2003 | Отправлено: 10:33 09-04-2008
terminat0r



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AleksKA
забить на Compaq.
Не понимаю, что за него все вцепились как блоха за собаку

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 14:38 09-04-2008
Открыть новую тему     Написать ответ в эту тему

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