Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Fortran > [General] Тонкости работы с массивами |
Автор: Ибрагим 27.5.2006, 12:16 |
COMPLEX X(2,2), Z(2,2) SUBROUTINE ASSIGN (M,N,A,B) COMPLEX A(M,N), B(M,N) DO 10 J=1,N DO 10 I=1,M 10 B(I,J)=A(I,J) RETURN END вызывается вот так: CALL ASSIGN(2,2,Z,X) -это понятно, матрица Z копируется в X. но есть и такой вызов DO 10 K=1,N 10 CALL ASSIGN(2, 1, Z(1,K), X(1,K) ) как понять, ведь нужно двумерные массивы передать, а Z(1,K), X(1,K) - это числа. если уж на то пошло, то тогда зачем через параметр M передается двойка ??? и так постоянно: допустим, в формальных параметрах подпрограммы умножения двух матриц указаны: матрица раз, матрица два, кол. строк, кол. столбцов, а в главной программе передается что левая пятка скажет, то число, то матрица, то вообще трехмерный - это-то как, там вообще же только два цикла по J и по I. ![]() |