Fortran - aide - boucle

Résolu
Bonjour,

je suis actuellement occupé de travailler sur un petit programme en fortran et j'aurais besoin d'aide pour la réalisation d'une boucle.

En résumé :
j'ai un fichier .dat avec les résultats de mon programme qui s'étalent durant 6500 ans avec un incrément de 1. Donc un fichier de 6500 lignes.

J'aimerais créer une boucle afin que ces données soient moyennées tous les 10 ans.
Donc au final, je devrais avoir un fichier .dat comportant 650 lignes qui seront chacune des moyennes de 10 années.

Est ce que quelqu'un pourrait me donner un petit coup de main?

Merci

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Bonjour,
    Je veux bien te donner un coup de main, mais je ne veux pas le faire à ta place.
    Déjà précise la norme de fortran utiliser (77 90 ?).
    Les boulces se font avec DO, la lecture de fichier avec OPEN et READ.
    1. Bonjour,

      Je travail sur fortran 77.

      J'ai déjà utilisé une boucle DO à un autre endroit dans mon programme et donc j'ai aussi utilisé le OPEN et le READ.

      Mais je ne parviens pas à mettre sous forme de ligne de code ce que je voudrais que le programme fasse. C'est à dire :
      - qu'il me sélectionne les dix premières lignes
      - qu'il m'en fasse la moyenne
      - et qu'il fasse cela pour les dix lignes suivantes (grâce à la boucle DO i=1,360)

      Voilà, je sais pas si tu parviens à comprendre parfaitement ce que je veux dire.
      Merci d'avance
      1. Contributeur
        Je vois ce que tu veux dire, mais je ne vois pas où est la difficulté.
        Tu fait deux boucles DO imbriqués, une variable d'accumulutation et un tableau pour stocker les moyennes...
      2. Hello

        bah j'ai pas dis que c'était compliqué, je me rend tout à fait compte que ça doit pas être chinois.
        Mais j'arrive pas à formuler tout ça sous forme de code.
        SI tu pouvais m'expliquer ça un peu plus explicitement, ça serait parfait

        Merci
      3. Contributeur
        en algo, ça donnerai un truc dans le genre :
        pour i allant de 1 à 6500/10
        pour j allant de 1 à 10
        Lire la valeur
        ajouter la valeur à $cumul
        fin pour j
        divisier $cumul par 10 // pour avoir la moyenne
        mettre $cumul dans la case i d'un tableau
        mettre $cumul à 0
        fin pour i

        là 80% du travail est fait.
      4. voici ce que j'ai déjà fait mais ça bug encore
        où t(i) c'est ma colonne de valeur allant de -6500 à 0
        et où Accu est ma variable accumulatrice

        Accu (0:6500)
        i=1
        j=1

        DO j=1:650

        DO i=1:10
        Accu(i)=t(i)+(i+1)
        ENDO

        tps(j)=Accu(i)/10
        Accu(i)=0
        ENDO
      5. Contributeur
        forcément, si tu as déjà tout mis dans un tableaux, ça change un peu l'algorithme.
        déjà, ça ne sert à rien d'utiliser un tableau pour Accu, au contraire, c'est pour ça que ça ne fonctionne pas.
        essai "Accu=t(i+10*(j-1))"