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 :

projet_puissance4_! en fortran90


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2
    Par défaut projet_puissance4_! en fortran90
    Bonjour à tous!
    Je réalise un projet de puissance4 en Fortran.
    Mon problème actuel est l'affichage de la grille.
    Pour afficher cette grille j'utilise un sous programme ( subroutine ) "affichage",
    j'aimerais que "affichage" puisse fonctionner avec une grille comportant un nombre de colonne quelconque.
    J'ai essayé de bidouiller avec write(*,' ',advance=no) mais je ne m'en sors toujours pas.
    En gros j'aimerais afficher n importe quel grille comportant un nombre de colonne et de ligne quelconque.
    du genre faire une boucle do ds la longueur sans le advance=no et une autre dans la largeur avec le advance=no....

    Comme vous pouvez le voir je suis un novice en Fortran. Merci d'avance à tous ceux qui trouveront un peu de temps pour répondre à un petit étudiant égaré!
    --------------------------------------------------------------------------
    module puissance4

    implicit none

    integer,parameter::nb_lines=6
    integer,parameter::nb_cols=3
    integer,parameter::len_win=4

    type colonne
    logical::jouable
    character,dimension(nb_lines)::pions
    integer::last_line
    end type colonne

    type grille
    integer::last_col
    type(colonne),dimension(nb_cols)::cols
    end type grille

    contains
    subroutine affichage(g)
    implicit none
    type(grille)::g
    integer::i,j
    do i=1,nb_lines
    print'(i1,8a1)',nb_lines+1-i,"&
    ","|",g%cols(1)%pions(i),"|",g%cols(2)%pions(i),"|",g%cols(3)%pions(i),"|"
    end do
    end subroutine affichage

    end module puissance4

    program p
    use puissance4
    implicit none
    integer::i,j
    type(grille)::la_grille
    do i=1,nb_lines
    do j=1,nb_cols
    if (mod(i*j,2)==0) then
    la_grille%cols(j)%pions(i)="o"
    else
    la_grille%cols(j)%pions(i)="x"
    end if
    end do
    end do
    call affichage(la_grille)
    end program p
    --------------------------------------------------------------------------

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2
    Par défaut
    je vais etre plus précis
    en faite j'essaye d'afficher une grille de puissance4 de ce genre
    6 | | | | | | | | |
    5 | | | | | | | | |
    3 | | | | | | | | |
    2 |o|x| | | | | | |
    1 |o|o| | |x| | | |
    -1-2-3-4-5-6-7
    avec un sous programme affichage.
    toutes les données sont définie de la sorte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     
    module puissance4
     
    implicit none
     
    integer,parameter::nb_lines=6
    integer,parameter::nb_cols=3
    integer,parameter::len_win=4
     
    type colonne
    logical::jouable
    character,dimension(nb_lines)::pions
    integer::last_line
    end type colonne
     
    type grille
    integer::last_col
    type(colonne),dimension(nb_cols)::cols
    end type grille
    Dans mon sous programme, je dois utiliser l'option advance de la fonction intrinseque write et un descripteur de format
    Pour l'instant voila mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    subroutine affichage(g)
    	implicit none
     	type(grille)::g 
    	integer::i,j
     	do i=1,nb_lines
      		print'(i1,8a1)',nb_lines+1-i,"&
        ","|",g%cols(1)%pions(i),"|",g%cols(2)%pions(i),"|",g%cols(3)%pions(i),"|"
     	end do
    end subroutine affichage
    de cette manière je ne peux pas modifier le nombre de colonne et ca me semble très maladroit.
    J'ai donc tenté ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    subroutine affichage(g)
    		implicit none
    		type(grille)::g
    		integer::i,j	
    		do i=1,nb_lines
    			do j =1,nb_cols	
    				write(*,'(2a1)',advance='no'),"|",g%cols(j)%pions(i)
    			end do
    		end do
    	end subroutine affichage
    mais le retour à la ligne ne se fait pas du tout....
    Besoin d'aide svp

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 489
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    subroutine affichage(g)
    		implicit none
    		type(grille)::g
    		integer::i,j	
    		do i=1,nb_lines
    			do j =1,nb_cols	
    				write(*,'(2a1)',advance='no'),"|",g%cols(j)%pions(i)
    			end do
    		end do
    	end subroutine affichage
    mais le retour à la ligne ne se fait pas du tout....
    Oui, il faut qu'il y ait un retour à la ligne après l'écriture de la dernière colonne, donc a priori:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    subroutine affichage(g)
    		implicit none
    		type(grille)::g
    		integer::i,j	
    		do i=1,nb_lines
    			do j =1,nb_cols-1
    				write(*,'(2a1)',advance='no'),"|",g%cols(j)%pions(i)
    			end do
                            write(*,'(2a1)'),"|",g%cols(nb_cols)%pions(i)
    		end do
    	end subroutine affichage
    Devrait faire l'affaire.

Discussions similaires

  1. Aide pour visualiser un code Fortran90
    Par nadjib2007 dans le forum MATLAB
    Réponses: 5
    Dernier message: 28/06/2007, 15h27
  2. Comment utiliser des sources en fortran90 sous JAVA?
    Par dante66 dans le forum Général Java
    Réponses: 6
    Dernier message: 21/02/2007, 16h25
  3. [REDHAT] Problème de rajout du package Fortran90/95 de linux
    Par Ginesi dans le forum RedHat / CentOS / Fedora
    Réponses: 5
    Dernier message: 30/10/2006, 10h45
  4. programme fortran90 qui calcule les racines d'une equation de deg 3 ?
    Par casier dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 10/06/2006, 18h30
  5. Comment passer de Fortran V à Fortran90 ?
    Par soniah dans le forum Fortran
    Réponses: 5
    Dernier message: 09/02/2006, 22h59

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