[fortran] écrire résultat sur une seule ligne [Résolu/Fermé]

Signaler
-
 fortran m'a tuer -
Bonjour,


j'ai un programme fortran à réaliser (une régression multilinéaire), et j'en suis déjà arriver à un stade assez avancé pour ce qui est de la programmation. Le point qui pose problème est l'affichage correct des résultats.
En fait, j'ai : un vecteur de chaines de caractères appelé "variable"
un vecteur de réel appelé "coeff"
et je dois afficher à l'écran : variable(1) = coeff(1) + coeff(2)variable(2) + coeff(3)variable(3) + ... + coeff(n)variable(n)

le problème, c'est que si je fais une boucle, on change de ligne à chaque tour de boucle. Dans l'exemple que j'étudie, il y a seulement 3 variables et 3 coeff, ce qui permet d'écrire, en faisant intervenir un format pour avoir le nombre de chiffres après la décimale voulu :
PRINT "(2(A),F6.2,2(A,F6.2,A))",TRIM(variable(1))," =",coeff(1)," +",coeff(2),TRIM(variable(2))," +",coeff(3),TRIM(variable(3))

Mais normalement un programme est sensé fonctionner pour n'importe quel jeu de donné, c'est-à-dire qu'il pourrait très bien y avoir 37 variables...^^
Je cherche donc à imprimer à l'écran tout ça, en utilisant un sous programme d'impression des résultats. Il faut aussi faire attention à ne pas mettre de "+" après la dernière variable, et le top du top serait de remplacer le "+" par un "-" quand le coeff est négatif (par ex, si coeff(i)<0 alors afficher "-",-coeff(i)).

Voilà, jespère que vous avez bien ompris mon problème et que vous pourrez m'aider !
Merci d'avance

8 réponses


Personne qui peut m'aider ?
Messages postés
18187
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
31 juillet 2020
4 932
hello
souvenir, souvenir, peut-être que :
mette un + comme premier caractère imprimé
ou un $ peut-etre

Je ne vois pas ce que tu veux dire...
Messages postés
18187
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
31 juillet 2020
4 932
PRINT "$(2(A),F6.2,.........
Messages postés
9687
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
21 juin 2020
1 181
Salut.
Fortran... comment rentre les choses faciles difficiles, je hais !
Mais bon, pour répondre à ton problème, la seule solution que je vois, c'est d'utiliser un format pour écrire tes données, peut être que là tu pourra lui préciser de ne pas faire de retour à la ligne. Sinon, tu peux essayer de concaténer ta chaine de caractère avant de l'afficher, si c'est possible, mais sans allocation dynamique de taille : bonne chance de pas sortir du domaine. Autre solution, qui marche mais qui peut être galère, cré toi une fonction C pour l'affichage. Voi là si tu veux plus de détail sur ce point :
http://www.yolinux.com/TUTORIALS/LinuxTutorialMixingFortranAndC.html

Merci à vous 2 pour vos réponses. J'ai essayé avec le $, ça ne marche pas. Pour ce qui est de la fonction C, c'est moyen car je dois utiliser uniquement fortran (et c'est le seul langage informatique où j'ai qques notions de base).

Sinon, j'ai trouvé un truc qui semble marcher :
PRINT*,TRIM(variable(1)),"=",coeff(1),("+",coeff(i),TRIM(variable(i)),i=2,nvariables)

où nvariables est le nombre de variables. Avec cette méthode, tout s'affiche bien sur une seule ligne et il n'y a pas de + après la dernière variable. En revanche, je n'ai pas réussi à avoir le format que je voulais (F6.2 : des nombres à 2 décimales et à maximum 6 caractères, c-à-d compris entre -99.99 et 999.99), ça semble marcher uniquement avec le format par défaut...
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
115
Bonsoir,

Peux-tu me donner un exemple concret de ce que tu souhaites obtenir à l'affichage car j'éprouve quelques dificultés pour illustrer le problème, surtout en ce qui concerne la chronologie d'apparition des valeurs et des signes relativement aux deux sources "variables" et "coeff".

Il n'est pas impossible que j'ai fait en fortran quelque chose qui s'apparente à ce problème, quitte à faire un montage à partir de plusieurs programmes.

Bonsoir

alors il y a une lecture des données, sur un fichier de ce type :
nombre de paramètres (chiffre)

x }
y }
z } toutes ces lettres sont stockées dans un vecteur de chaines de caractères ("variable",
t }dimension "nombre de paramètres"
u }
v }

5 }
4,2 }
5,26 } toutes ces valeurs sont stockées dans un vecteur de réels("coeff", dimension
-74 } "nombre de paramètres")
0,04 }
-2,78}

Et il faut afficher à la sortie :
x = 5 + 4,2 y + 5,26 z + -74 t + 0,04 u + -2,78 v

ou, mieux encore :
x = 5 + 4,2 y + 5,26 z - 74 t + 0,04 u - 2,78 v
mais ce n'est vraiment pas la peine d'être pointilleux à ce point à mon avis
>
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012

Salut !

effectivement, tu t'es vraiment pris la tête sur ce problème à ce que je vois, merci beaucoup ! Ce que tu a fait m'intéresse (pour ma culture générale), mais je ne pense pas que je l'intègrerai à mon programme : je suis en 1ère année d'école d'ingénieur, dans une filière ou l'informatique ne fait partie de l'emploi du temps uniquement le 1er semestre...il ne s'agit donc pas de faire des programmes ultra perfectionnés (quand j'ai exposé mon problème au prof, il a répondu "n'allez pas à ce point dans le détail"^^)

Merci pour ton travail, si tu veux tu peux m'envoyer ce que tu as fait à jrcolson arobase voila.fr
J'espère que tu ne considéreras pas que tes efforts ont été inutiles... :-)
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
115 > fortran m'a tuer
Bonsoir,

J'espère que tu ne considéreras pas que tes efforts ont été inutiles... --

Non, pas du tout, le problème est intéressant et suffisamment général pour être réutilisé, par exemple en l'intégrant dans des applications d'édition de résultats.

Je t'ai fait parvenir un document à l'adresse que tu as indiquée.

--
Cordialement.

Cchristian.
>
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012

je viens de voir le 200 lignes "hors commentaires"... les programmes que je dois réaliser font à peu près 600 lignes avec commentaires, et il y a près de 50% de commentaires...(et on doit réaliser seulement 2 programmes comme ça dans le semestre). On ne se situe pas du tout à la même échelle pour ce qui est de la programmation là, ya un léger clivage débutant/expert je crois !

++
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
115 > fortran m'a tuer
Je n'ai aucun mérite c'était mon métier, encore que pour Fortran je débute bien que je l'ai appris en 1969 sans l'avoir jamais pratiqué.

Si je peux t'aider, n'hésite pas, bon courage !
>
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012

Merci pour le mail et pour l'offre d'aide ! Je garde ton (votre ?^^) email sous la main, ça peut toujours servir !

Bonne soirée