Fortran - aide - boucle

Résolu/Fermé
Jéjé222 Messages postés 14 Date d'inscription mardi 19 avril 2011 Statut Membre Dernière intervention 22 avril 2011 - 19 avril 2011 à 16:50
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 25 avril 2011 à 23:11
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 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
20 avril 2011 à 10:09
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 mardi 19 avril 2011 Statut Membre Dernière intervention 22 avril 2011
20 avril 2011 à 11:53
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 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
20 avril 2011 à 15:14
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 mardi 19 avril 2011 Statut Membre Dernière intervention 22 avril 2011
21 avril 2011 à 09:45
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 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
21 avril 2011 à 09:59
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 mardi 19 avril 2011 Statut Membre Dernière intervention 22 avril 2011
21 avril 2011 à 10:31
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 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
21 avril 2011 à 11:04
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