Fortran - aide - boucle

Résolu
Jéjé222 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
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

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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.
0
Jéjé222 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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...
0
Jéjé222 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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.
0
Jéjé222 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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))"
0