Problème avec une boucle en fortran
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Problème avec une boucle en fortran



  1. #1
    slash21000

    Problème avec une boucle en fortran


    ------

    Bonjour, j'ai un exercice à faire en physique de la matière condensée et je dois réaliser un programme permettant de visualiser sur Pymol les 5 réseaux de Bravais en 2 dimensions.
    J'ai voulu créer un boucle dans mon programme pour demander à l'utilisateur de rentrer les coordonnées des vecteurs a1 et a2 afin d'éviter de modifier mon programme à chaque fois en rentrant directement les valeurs mais ça ne marche pas comme je le voudrais. Est-ce que quelqu'un pourrait m'aider ?
    J'ai mis le programme avec la boucle (Capture) et le programme correspondant à un réseau hexagonal (Capture hexagone).

    -----
    Images attachées Images attachées

  2. #2
    CM63

    Re : Problème avec une boucle en fortran

    Bonjour,

    Il vaudrait mieux mettre ton code en texte entre deux balises "code".

    Code:
    Comme ceci (fait un "répondre avec citation, pour voir ce que j'ai fait)
    Dans le premier programme:
    --- dans la première double boucle:
    ------ tu n'utilises pas les indices i et j
    ------ tu lis 4 fois les mêmes deux variables : a1(2) et a2(2)
    --- dans la deuxième double boucle:
    ------ tu n'utilises pas les indices m et n
    ------ tu utilises i et j alors que ces variables ont des valeurs qui, je pense, ne t'intéressent pas : celles qu'elles avaient à la fin de la première double boucle,
    ------ tu tentes d'utiliser m et n comme tableaux alors que ce sont des variables simples,
    ------ de toutes façons il ne faut pas les modifier car ce sont les indices de boucle,

    Je regarde l'autre programme.
    Dernière modification par CM63 ; 24/03/2016 à 20h17.

  3. #3
    CM63

    Re : Problème avec une boucle en fortran

    Dans le deuxième programme, je ne vois pas de problème, il ne marche pas ? Quel est le message d'erreur?

  4. #4
    slash21000

    Re : Problème avec une boucle en fortran

    Citation Envoyé par CM63 Voir le message
    Dans le deuxième programme, je ne vois pas de problème, il ne marche pas ? Quel est le message d'erreur?
    Aucun problème, il marche
    J'ai juste voulu le modifier pour éviter de devoir entrer les coordonnées des vecteurs dans la structure de mon programme à chaque fois que je veux faire un motif différent.
    C'est pour ça que je pensais à une boucle, mais elle ne marche pas correctement. Je vais essayer de faire comme vous m'avez dit.

  5. A voir en vidéo sur Futura
  6. #5
    slash21000

    Re : Problème avec une boucle en fortran

    J'ai essayé de faire comme vous m'avez dit, mais ça ne marche toujours pas.
    Il me demande indéfiniment de rentrer les coordonnées pour les deux vecteurs ...
    Images attachées Images attachées  

  7. #6
    JPL
    Responsable des forums

    Re : Problème avec une boucle en fortran

    Pourrais-tu utiliser la balise Code (# en mode avancé de l'éditeur) ?

    Lis : http://forums.futura-sciences.com/pr...ves-forum.html.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  8. #7
    CM63

    Re : Problème avec une boucle en fortran

    Bonjour,

    La première double boucle est encore mal écrite. Pour le voir, fais à la main ce que fait le programme. Sous éditeur avec des copier/coller, c'est assez facile à faire.
    Je vais le faire pour cette fois : la double boucle va faire :

    Code:
    write(*,*) "Entrer les coordonnées de a1:"
    read(5,*) a1(1), a1(1)
    write(*,*) "Entrer les coordonnées de a2:"
    read(5,*) a2(1), a2(1)
    
    write(*,*) "Entrer les coordonnées de a1:"
    read(5,*) a1(1), a1(2)
    write(*,*) "Entrer les coordonnées de a2:"
    read(5,*) a2(1), a2(2)
    C'est ça que tu veux faire? Ça m'étonnerait, dans le premier read tu lis deux fois a1(1), dans le deuxième read tu lis deux fois a2(1), etc.
    Je suppose que , ce que tu veux faire c'est ça :

    Code:
    write(*,*) "Entrer les coordonnées de a1:"
    read(5,*) a1(1), a1(2)
    write(*,*) "Entrer les coordonnées de a2:"
    read(5,*) a2(1), a2(2)
    Je te laisse chercher comment faire, en fait il n'y a pas deux boucles imbriquées mais une seule. Sauf qu'il va falloir bricoler quelque chose pour que ça affiche "a1" lors du premier passage dans la boucle , et "a2" lors du deuxième. Le plus simple serait de na pas faire de boucle et d'écrire ce que j'ai écrit ci-dessus, mais je suppose qu'on te demande de faire une boucle? Dans ce cas il faut créer un tableau chaîne de caractères.

    Evite de coller des images, passe en mode avancé, surligne ton code collé en texte, et clique sur le # (c'est ça qu'on appelle "utiliser la balise code" , mais bon, je ne sais pas si mon explication est plus claire )

Discussions similaires

  1. Fortran: boucle sur OPEN
    Par arnaud2712 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 25/03/2015, 13h43
  2. problème boucle interruption avec boucle spi
    Par alice123 dans le forum Électronique
    Réponses: 8
    Dernier message: 16/03/2013, 02h26
  3. boucle et variable en fortran
    Par invitea0f03ccc dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 25/12/2008, 14h38
  4. probleme d'indexage de boucle for avec matlab
    Par invitec45730b2 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 23/10/2007, 02h32
  5. Probleme avec les mex files : utilisation du fortran en matlab
    Par invite0f0e4005 dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 04/07/2006, 14h41