2017-04-16 2 views
1

Existe-t-il un moyen de définir un tableau (vecteur, ou matrice, ou même scalaire) à zéro encore dans Fortran? 2003/2008 semblent prendre Fortran à un niveau très moderne, et je dois me demander s'ils ont inclus un moyen facile de définir des valeurs de tableau à zéro sans avoir à faireExiste-t-il une fonction intrinsèque pour initialiser les tableaux à zéro dans Fortran?

do i = 1,X 

     do j = 1,Y 

      A(i,j) = 0 

     enddo 

enddo 

où X est le nombre de lignes et Y est le nombre de colonnes dans une matrice à deux dimensions. Cela pourrait être généralisé à autant de dimensions que vous le souhaitez, mais le principe est le même.

Matlab cela se fait facilement avec la fonction de zéros, c.-à-

A = zeros(X,Y) 

moderne Fortran semble intégrer beaucoup de choses que les gens comme au sujet de Matlab et d'autres langues dans c'est le répertoire, donc je suis juste curieux s'ils ont un intrinsèque pour cette tâche simple et basique pour le moment.

Ou peut-être dans Fortran moderne, il n'est pas nécessaire d'effacer les valeurs précédemment stockées dans la mémoire en initialisant des tableaux?

je suppose un chemin plus court serait d'aller juste

real, dimension(X,Y)  :: A 

A = A*0.0 ! Set all elements to zero by multiplying matrix by scalar value 0 

Mais la question au sujet d'une intrinsèque est toujours debout.

+4

Je pense que 'A = 0.0' sera fais le. – rici

+0

@rici, vous avez raison. C'est une solution très simple à quelque chose que j'ai fait de trop. –

+2

Vous avez trouvé la bonne réponse, mais notez que votre méthode "multiplier par zéro" n'est pas correcte - il n'est jamais correct d'utiliser une variable non initialisée dans une expression –

Répondre

1

Il s'avère que la réponse est assez simple.

A = 0.0 

ou tout simplement

A = 0 

active tous les éléments de votre tableau à 0,0000 ...

(Motion proposée de la question.)