IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Fortran Discussion :

Récupérer une suite de nombres générés par un programme externe


Sujet :

Fortran

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2004
    Messages : 185
    Points : 118
    Points
    118
    Par défaut Récupérer une suite de nombres générés par un programme externe
    Bonjour,
    Je dois évaluer un programme qui génère une suite de nombres. J'appelle ce programme depuis mon programme Fortran avec la commande :
    l'exécution de cette ligne retourne sur mon écran la suite, j'aimerais en fait récupérer cette suite dans un tableau. Je connais la dimension, 50, le type , REAL; mais je ne vois pas comment faire pour retourner les valeurs de «suite» dans mon programme.

    précisions :
    n'ayant pas les sources de «suite», je ne peux pas fusionner les programmes.
    Je n'ai pas le droit d'écrire le résultat de «suite» dans un fichier et de l'ouvrir ...

  2. #2
    Membre éclairé Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Points : 825
    Points
    825
    Par défaut
    je ne l'ai jamais fait en fortran mais l'idée c'est d'utiliser les flux (tu es bien sous linux?) il faut dériver les flux qui doivent aller sur la console dans une chaine de caractère dans ton code. ensuite, il ne reste plus qu'à décoder cette chaine pour en extraire un tableau....

    cela dit passer par l'ascii pour récupérer des nombre c'est un gâchis niveau précision, il faut juste en être conscient...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2004
    Messages : 185
    Points : 118
    Points
    118
    Par défaut
    oui je suis bien sous linux. Ok pour l'idée, mais je ne vois pas comment la réaliser justement... je commence à croire que ça n'est pas possible.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Je ne connais pas vraiment Linux, mais jadis, à l'époque de DOS (!), il était possible de lire par programme le tampon de la mémoire dédiée à la console... Je ne sais pas si on peut encore le faire dans une fenêtre console sous Windows. La technique est / était évidemment hautement non portable.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2004
    Messages : 185
    Points : 118
    Points
    118
    Par défaut
    merci pour vos réponses, en fait j'ai changer ma stratégie...

    je fais un pipe à l'execution du programme :
    comme ça la sortie de suite est directement envoyée dans l'entrée de analyse. noter que j'aurai pu faire ça depuis un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call system("./suite | ./analyse")
    mais ça me semble alourdir mon code pour pas grand chose...

    En pratique l'analyse porte sur plusieurs aspects mathématiques de ma suite, donc je compte ajouter un paramètre d'entré pour spécifier ce que je veux.

    Je n'ai jamais travaillé avec un paramètre d'entré (pas plus qu'avec un pipe jusqu'à aujourd'hui...), mais je reviendrais poster si je ne trouve pas comment faire

    encore merci.

  6. #6
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par TocTocKiéLà? Voir le message
    Je n'ai pas le droit d'écrire le résultat de «suite» dans un fichier et de l'ouvrir
    Pourquoi n'as tu pas le droit? C'est de loin la solution la plus simple, et rediriger la sortie de suite vers un fichier est trivial.

    Sinon, tu pourrais rediriger la sortie de "suite" vers ton programme via un pipe et lire directement sur stdin (unit 5 en general).

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2004
    Messages : 185
    Points : 118
    Points
    118
    Par défaut
    @ DaZumba,
    je n'ai pas le droit car c'est écrit sur ma feuille de TD

  8. #8
    Membre éclairé Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Points : 825
    Points
    825
    Par défaut
    dazumba m'a donné une idée: lit le stdout (unit 6 généralement)

    je m'explique: ton prog suite écrit dans la console (stdout+stderr) (unit 6 et 0) du coup tu lit dans cette unité ce qui en est sortis....
    par contre tu aura du texte brut, il faudra ensuite le traiter....

  9. #9
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par genteur slayer Voir le message
    dazumba m'a donné une idée: lit le stdout (unit 6 généralement)

    je m'explique: ton prog suite écrit dans la console (stdout+stderr) (unit 6 et 0) du coup tu lit dans cette unité ce qui en est sortis...
    Le principe du pipeline est que le premier programme ecrit dans stdout, mais le programme suivant lit dans stdin (c'est assez logique). Donc c'est bien stdin (unite 5) qu'il faut utiliser dans le deuxieme programme pour obtenir les donnees.

  10. #10
    Membre éclairé Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Points : 825
    Points
    825
    Par défaut
    mais il me semblais justement que le pipe revenais à connecté le stdout vers le stdin....

  11. #11
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par genteur slayer Voir le message
    mais il me semblais justement que le pipe revenais à connecté le stdout vers le stdin....
    On est d'accord, mais ton message precedent donne l'impression qu'il faut "lire stdout", ce qui n'a pas de sens.
    Pour resume, on a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    program writer
     
      implicit none
     
      integer, parameter :: stdout = 6
     
      write(stdout, '(A)') 'Sent message.'
     
    end program writer
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    program reader
     
      implicit none
     
      integer, parameter :: stdin = 5
     
      character (len=100) :: message
     
      read(stdin, '(A)') message
     
      print '(A,1X,A)', 'Received:', message
     
    end program reader
    qui donnent bien le result attendu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    > writer | reader
    Received: Sent message.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/02/2015, 13h29
  2. Récupérer une suite de nombre
    Par queryz dans le forum Langage
    Réponses: 4
    Dernier message: 09/06/2010, 10h13
  3. [Inno setup/VB6]Récupération d'une clef de registre généré par VB6
    Par marsup54 dans le forum Installation, Déploiement et Sécurité
    Réponses: 3
    Dernier message: 02/09/2006, 00h07
  4. afficher une suite de nombres dans une string
    Par hysah dans le forum C++
    Réponses: 4
    Dernier message: 27/04/2006, 18h51
  5. Réponses: 8
    Dernier message: 02/12/2005, 18h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo