2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Derived type in Fortran
Сообщение05.11.2010, 00:18 


27/07/08
107
Russia
Доброго всем времени суток!
Вот кусок из моей программы:
Код:
MODULE TYPEDECL
public PLOT, TRAJ
  TYPE PLOT
  double precision, allocatable :: s1(:,:), s2(:,:), s3(:,:), s4(:,:), s5(:,:), s6(:,:)
  END TYPE PLOT
END MODULE TYPEDECL
...
TYPE (PLOT) :: state, state1
...
        allocate(&
        state%s1(1:nk(1),1:poplength),state%s2(1:nk(2),1:poplength),state%s3(1:nk(3),1:poplength),&
        state%s4(1:nk(4),1:poplength),state%s5(1:nk(5),1:poplength),state%s6(1:nk(6),1:poplength),&
        state1%s1(1:nk(1),1:poplength),state1%s2(1:nk(2),1:poplength),state1%s3(1:nk(3),1:poplength),&
        state1%s4(1:nk(4),1:poplength),state1%s5(1:nk(5),1:poplength),state1%s6(1:nk(6),1:poplength))

Я хотел бы иметь возможность совершать алгебраические операции с переменными произвольного типа, как с обычными числами, то есть
Код:
state = state + state1

Вместо того, чтобы прописывать сложение для кажлого элемента:
Код:
...
         state1%s1(1:nk(1),1:poplength) = state1%s1(1:nk(1),1:poplength) +state%s1(1:nk(1),1:poplength)
         state1%s2(1:nk(2),1:poplength) = state1%s2(1:nk(2),1:poplength) +state%s2(1:nk(2),1:poplength)
         state1%s3(1:nk(3),1:poplength) = state1%s3(1:nk(3),1:poplength) +state%s3(1:nk(3),1:poplength)
         state1%s4(1:nk(4),1:poplength) = state1%s4(1:nk(4),1:poplength) +state%s4(1:nk(4),1:poplength)
         state1%s5(1:nk(5),1:poplength) = state1%s5(1:nk(5),1:poplength) +state%s5(1:nk(5),1:poplength)
         state1%s6(1:nk(6),1:poplength) = state1%s6(1:nk(6),1:poplength) +state%s6(1:nk(6),1:poplength)
...

 Профиль  
                  
 
 Re: Derived type in Fortran
Сообщение05.11.2010, 14:32 
Заслуженный участник


15/05/05
3445
USA
Ulrih в сообщении #370285 писал(а):
Я хотел бы иметь возможность совершать алгебраические операции с переменными произвольного типа, как с обычными числами, то есть
Код:
state = state + state1
Вместо того, чтобы прописывать сложение для кажлого элемента

Даже в ОО языках если Вы определяете новый класс, то операторы (+) и пр. должны программироваться явно.
Вы можете реализовать сложение и пр. как дополнительные функции:
Код:
SumPLOT ( state , state1 )

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group