Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Fortran > помогите с задачей пожалуйста


Автор: emilsitdikov 17.11.2011, 22:19
такая задача: дан одномерный массив из 18 элементов, надо найти произведение элементов первой половины массива, а вторую половину инвертировать (поменять местами девятый с восемнадцатым, десятый с семнадцатым и тд) помогите решить пожалуйста! произведение легко находится а вот как вторую половину инвертировать? smile 
заранее спасибо!

Автор: Фантом 18.11.2011, 01:10
Если считать, что массив называется A и индексы меняются от 1 до 18, то произведение ищется так:
Код

product(A(1:9))

а инвертирование делается так:
Код

forall(i=9:18) A(i)=A(27-i)

где i - переменная типа integer. Да, это в случае, если "вторая половина" действительно начинается с 9-го элемента (вообще-то должна с 10-го). 

Автор: emilsitdikov 18.11.2011, 14:23
ой, мы такими операторами не пользовались еще, нужно составить программу в примитивном виде через оператор do
например произведение так будет: 
n=18 
p=1 
do i=1, n/2
p=p*a(i)
end do
! а в этой части программы нужно инвертировать вторую половину (только как??!)
и вывести массив на экран до инвертирования и после )

Добавлено через 2 минуты и 12 секунд
ээ... и кстати да вторая половина с десятого элемента а не с девятого (ошибочка в первом посте)

Автор: BakinEugene 19.11.2011, 09:27
Без forall можно так:

Код

A(9:18) = A(18:9:-1)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)