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 :

Taille d'un tableau


Sujet :

Fortran

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 21
    Points : 10
    Points
    10
    Par défaut Taille d'un tableau
    Bonjour,

    Je cherche ici à créer un programme qui récupère la taille d'une matrice contenue dans un fichier.
    Après avoir cherché sur le forum, j'ai trouvé la solution pour connaitre la taille d'une telle matrice si celle-ci est formatée (on peut récupérer le nombre de lignse via un compteur et "iostat" dans un read) et le nombre de colonnes en stockant la première ligne dans un chaine de caractère et en traitant cette dernière pour connaitre le nombre d'espaces, etc...

    Mais si l'écriture dans le fichier est non-formatée, je ne vois pas du tout comment savoir la taille de la matrice contenue dans le fichier.

    La finalité de ce programme serait de pouvoir extraire par exemple la taille d'un fichier son ou la taille d'une image afin de stocker ces dernières et de les traiter (peut-être qu'une bibliothèque ad-hoc existe ? ... )

    Merci beaucoup.

  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
    en non formaté, tu peut toujours compter le nombre de ligne avec l'IOSTAT comme en formaté. pour le nombre de colonne, c'est le read qui te le donne.
    si tu cherches à lire avec un éditeur hexa le fichier non formaté de fortran tu remarque 4octets (8 en système 64bits) identiques en début et fin d'enregistrement (ligne) cela te donne la taille de l'enregistrement.

    si il s'agit de lire un fichier son ou image, selon les tailles sont donnés dans les entête de fichier... je te suggère de lire les specs des formaat (wav, bmp, tiff, jpg, ogg, etc....) l'info y est toujours, mais pas de la même manière selon le format.
    autre solution, une lib de lecture/écriture de ce type de fichiers....
    il n'y a que ceux qui savent qui ne savent pas qu'ils savent...
    Libere-toi hacker, GNU's Not Unix!!!

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Cette méthode marche du coup aussi pour une écriture formatée (ce m'évite de faire les fonctions qui traite ma chaîne de caractère, qui récupère le format de l'écriture et après le nombre d’élément...)
    Comme éditeur hexa j'utilise EditHexa, mais dans mon fichier écrit en non formaté (comme dans le fichier formaté), je n'arrive pas à voir les quatre octets de début et de fin d'enregistrement ...

    Par exemple, voila ce que j'obtiens pour un fichier non formaté (comme on le voit, j'ai juste écrit des 1.000 et des 2.000 :






    Merci

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 152
    Points : 191
    Points
    191
    Par défaut
    Autre solution : à l'ouverture du fichier type :
    OPEN(11,FILE='mon_fichier',FORM='unformatted', ACCESS='stream',...)
    La commande ACCESS='stream' permet de supprimer ces octets supplémentaires ajoutés par FORTRAN.

    Cela dit, cette commande n'est valable, à ce que j'ai vu, qu'avec certain compilateurs (ifort par exemple).

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Merci, je ne connaissait pas cette commande (j'utilise gfortran).
    Mais par défaut (avec un WRITE(1)var ) je devrais avoir ces 4 octets ?

  6. #6
    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
    le access='stream' marche avec gfortran!!!
    ensuite, il faut voir si tu cherche la portabilité du code, il est alors préférable de respecter strictement la norme fortran....
    comme option de compile avec gfortran c'est:
    -std=std
    Specify the standard to which the program is expected to conform, which may be one of `f95', `f2003', `f2008', `gnu', or `legacy'. The default value for std is `gnu', which specifies a superset of the Fortran 95 standard that includes all of the extensions supported by GNU Fortran, although warnings will be given for obsolete extensions not recommended for use in new code. The `legacy' value is equivalent but without the warnings for obsolete extensions, and may be useful for old non-standard programs. The `f95', `f2003' and `f2008' values specify strict conformance to the Fortran 95, Fortran 2003 and Fortran 2008 standards, respectively; errors are given for all extensions beyond the relevant language standard, and warnings are given for the Fortran 77 features that are permitted but obsolescent in later standards.
    il n'y a que ceux qui savent qui ne savent pas qu'ils savent...
    Libere-toi hacker, GNU's Not Unix!!!

  7. #7
    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
    access='stream', c'est du Fortran 2003 (et +) standard.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    merci .
    Cependant j'ai besoin de ces 4 octets pour déterminer le début et la fin de mon fichier. Malheureusement je ne vois pas comment faire une procédure qui pourrait récupérer et lire ces 4 octets...

    Merci

Discussions similaires

  1. [Tableau]comment connaitre la taille d'un tableau à 2 dimensions
    Par Kyti dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 22/04/2005, 10h27
  2. Changer la taille d'un tableau déjà initialisé
    Par totofweb dans le forum C++
    Réponses: 2
    Dernier message: 25/07/2004, 15h55
  3. taille d'un tableau
    Par monstour dans le forum ASP
    Réponses: 3
    Dernier message: 24/06/2004, 15h16
  4. Taille maximum de tableau en Delphi
    Par yannick37 dans le forum Langage
    Réponses: 5
    Dernier message: 03/03/2004, 13h18
  5. qbasic : taille d'un tableau
    Par clood200 dans le forum Basic
    Réponses: 2
    Dernier message: 16/09/2003, 07h26

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