2016-06-10 3 views
-1

Я пытаюсь создать цикл, который позволит пользователю создать несколько матриц, в которых они объявили размер матрицы, как в количестве столбцов и строк. Я создал первую часть этого цикла, но моя проблема заключается в создании переменной, имя которой изменится так, что матрица, которая была ранее создана в цикле, не будет перезаписана. Затем мне нужно умножить все разные матрицы.Изменение имен переменных в цикле fortran

DO п = 1: число число число матриц, которые должны быть созданы

WRITE (,) 'Введите количество строк матрицы имеет'

READ (,) г

WRITE (,) 'Введите количество столбцов'

READ (,)

REAL, DIMENSION (r, c) :: "здесь мне нужно изменить имя переменной, чтобы оно не перезаписывалось каждый раз".

+0

Просьба поделиться с вами кодом –

ответ

1

Я бы не динамически генерировал новые переменные. Похоже, вы просто хотите сделать каждую новую переменную элементом массива. Выделите массив с размером, равным числу итераций цикла. Это может показаться сложным, если переменные - это все 2d-массивы разных измерений, но вы можете, конечно, обернуть их в какую-то структуру.

+1

Мне нужно делать частичные продукты с разными матрицами, могу ли я по-прежнему выполнять умножение матрицы, если они все являются элементами одного и того же массива. –

+0

@SpencerMickus да, если 2d массивы имеют одинаковый размер, и вы можете просто создать 3d-массив в своем цикле. Позже в вашей программе вы можете проиндексировать конкретный массив 2d, необходимый для умножения. Подумайте о трехмерном массиве как о простом хранилище и вытащите матрицы во временные переменные массива 2d позже. – maldata

+0

Думаю, ему нужно будет создать один трехмерный массив и два массива, чтобы удержать размер каждой матрицы. например, 'A (500, 500, number)' 'length_x (number)' 'length_y (number)', где 500 - максимальное количество строк и столбцов. Просто пример. – Jagte

Смежные вопросы