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

Turbo Pascal Discussion :

[TP] Affichage d'une matrice


Sujet :

Turbo Pascal

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 12
    Points : 7
    Points
    7
    Par défaut [TP] Affichage d'une matrice
    salut à tous,
    voilà je voulais savoir comment on peut dire à Pascal de nous afficher une matrice (je veux dire qu'il l'affiche sous forme de tableau...)
    est-ce que c'est compliqué ?

    merci!

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Non
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    j'ai fait un truc dans ce style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure affichage(a:matrice);
        var i,j:integer;
        begin for i:=1 to n do begin for j:=1 to n do
        begin  write(a[i,j],',');end; writeln end
       end;
    mais donc là, il m'affiche tous les coeff à la suite séparés par des virgules...
    quelqu'un peut-il m'aider pour améliorer ceci ?
    merci

  4. #4
    Membre actif Avatar de Ultima
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 223
    Points : 261
    Points
    261
    Par défaut
    Bonjour,
    je crois qu’il est n’est pas bête de faire une recherche sur les discutions existantes avant d’en ouvrir une autre.
    ce n’est pas normal que cette question soit posée deux fois en moins d’un mois.

    [TP] Afficher un tableau (matrice) ( 02/05/2007, 16h49 )

    Exemple pour une matrice 2*2
    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
    var matrice : array [1..15,1..4] of WORD;
        i, j : CARDINAL;
     
    begin
      // remplissage
      randomize;
      for i:= 1 to 15 do
        for j:= 1 to 4 do
            matrice[i,j] := random(65535);
     
     // affichage
      for i:= 1 to 15 do
      begin
        for j:= 1 to 4 do
          write(matrice[i,j]:8); // je réserve 8 espaces pour chaque nombre
        writeln;  // retour à la ligne tout les 4 colonnes.
      end;
    end.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    désolé, merci quand même

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Voici une façon trés simple pour le faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    type A=array[1..n,1..m]of integer;
     
    ...
    For i:=1 to n do
         begin
         For j:=1 to m do
              begin
              write(A[i,j],'  ');
              end;
         writeln;
         end;
    ...

  7. #7
    Membre actif Avatar de Ultima
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 223
    Points : 261
    Points
    261
    Par défaut
    Bonsoir,
    Citation Envoyé par The Bronx 05
    Voici une façon trés simple pour le faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     type A=array[1..n,1..m]of integer;
     
    ...
    For i:=1 to n do
         begin
         For j:=1 to m do
              begin
              write(A[i,j],'  ');
              end;
         writeln;
         end;
    ...
    Si le but est effectivement de faire une affichage sous forme de tableau alors cette méthode n’est pas approprié du tout.
    En effet, si les nombres à afficher n’ont pas le même nombre de chiffre, alors on n’aura pas de tableau à l’affichage.

  8. #8
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    Citation Envoyé par williamdunord
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure affichage(a:matrice);
        var i,j:integer;
        begin for i:=1 to n do begin for j:=1 to n do
        begin  write(a[i,j],',');end; writeln end
       end;
    Là je rejoins tout à fait droggo dans ce qu'il dira si jamais il lit ça :

    apprend à indenter ton code correctement !

    Apparement ce n'est pas un copier-coller de ton code vu que celui-ci ne compile pas or tu dis l'avoir testé, mais ne serait-ce que par respect pour ceux qui vont le lire, indente-le correctement.

    Là il est réellement illisible !

  9. #9
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Yes,
    Citation Envoyé par Loceka
    Là je rejoins tout à fait droggo dans ce qu'il dira si jamais il lit ça :

    apprend à indenter ton code correctement !

    Apparement ce n'est pas un copier-coller de ton code vu que celui-ci ne compile pas or tu dis l'avoir testé, mais ne serait-ce que par respect pour ceux qui vont le lire, indente-le correctement.

    Là il est réellement illisible !
    Voilà qui m'évite de l'écrire une fois de plus.
    Si les cons volaient, il ferait nuit à midi.

  10. #10
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Ultima
    Bonsoir,
    Si le but est effectivement de faire une affichage sous forme de tableau alors cette méthode n’est pas approprié du tout.
    En effet, si les nombres à afficher n’ont pas le même nombre de chiffre, alors on n’aura pas de tableau à l’affichage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    type A=array[1..n,1..m]of integer;
     
    ...
    For i:=1 to n do
         begin
         For j:=1 to m do
              begin
              write(A[i,j]:5 ,'  ');
              end;
         writeln;
         end;

    probleme réglé , essayez le et vous verrez (il suffit juste de remplcer le " :5 " par le nombre de caractère max que peut contenir l'entier ( ex : 52364 contient 5 caractère ) et bonne chance

  11. #11
    Membre actif Avatar de Ultima
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 223
    Points : 261
    Points
    261
    Par défaut
    Citation Envoyé par The Bronx 05
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    type A=array[1..n,1..m]of integer;
     
    ...
    For i:=1 to n do
         begin
         For j:=1 to m do
              begin
              write(A[i,j]:5 ,'  ');
              end;
         writeln;
         end;

    probleme réglé , essayez le et vous verrez (il suffit juste de remplcer le " :5 " par le nombre de caractère max que peut contenir l'entier ( ex : 52364 contient 5 caractère ) et bonne chance
    Bonjour,
    Tu utilises l’opérateur : , tu reviens donc à la méthode que je préconisais dès le départ. D’ailleurs si tu regardes bien ton code, tu constateras, qu’il ressemble énormément au mien,
    Sauf que je ne comprends pas pourquoi tu t’obstines à utiliser le caractère espace en plus.
    Tu peux expliquer ton raisonnement, s’il te plait ?

    Autre chose, pourquoi n’utilises-tu jamais la balise CODE ?

  12. #12
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Avril 2007
    Messages : 89
    Points : 61
    Points
    61
    Par défaut Voila ma solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for i:=1 to n do 
    begin
    for j:=1 to n do
    begin
    write(T[i,j]:4);
    end;
    end
    ;

    n:la longeur de matrice
    j et i sont des entiers
    T est la matrice
    Salut Pour Tout Le Monde

  13. #13
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    Citation Envoyé par zizo89
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for i:=1 to n do 
    begin
    for j:=1 to n do
    begin
    write(T[i,j]:4);
    end;
    end
    oui....

    elle diffère seulement des autres proposées ici dans le fait qu'elle affiche mal certains entiers (ceux qui sont supérieurs à 9999) et dans le fait que tu ne sautes pas de ligne, ce qui rend la lecture de l'affichage assez complexe.

    C'est quoi l'avantage de ton code ?

  14. #14
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Ultima
    Bonjour,
    Tu utilises l’opérateur : , tu reviens donc à la méthode que je préconisais dès le départ. D’ailleurs si tu regardes bien ton code, tu constateras, qu’il ressemble énormément au mien,
    Sauf que je ne comprends pas pourquoi tu t’obstines à utiliser le caractère espace en plus.
    Tu peux expliquer ton raisonnement, s’il te plait ?

    Autre chose, pourquoi n’utilises-tu jamais la balise CODE ?
    Pour repondre à tes question :
    1- j'utilise le caracthére espace pour séparer entre deux éléments d'une meme ligne (pour qu'ils ne soient pas collés au moment de l'affichage sinon on les prenderai pour un seul entier )

    2- et si j'ai jamais utiliser la balise code c'est parce que je l'ai pas fais volentairement (la prochaine fois j'y veillerai à bien suivre ton conseil )

  15. #15
    Membre actif Avatar de Ultima
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 223
    Points : 261
    Points
    261
    Par défaut
    Citation Envoyé par The Bronx 05
    Pour repondre à tes question :
    1- j'utilise le caracthére espace pour séparer entre deux éléments d'une meme ligne (pour qu'ils ne soient pas collés au moment de l'affichage sinon on les prenderai pour un seul entier )
    Bonjour,
    Visiblement, tu ne comprends pas le fonctionnement de l’opérateur : ,
    il sert à faire des espaces, mais le nombre d’espaces est égale au nombre indiqué moins le nombre de caractères à afficher. C’est pour cela qu’on doit l’utiliser pour faire une tabulation (parce que les espaces sont calculés en fonction du nombre de caractères à afficher, et en prennent compte du nombre maximum d’espace que le programmeur a définit).

    Par exemple write('TEST' : 6) ;
    length('TEST') = 4 on a donc 6-4 =2
    On va donc avoir 2 espaces avant 'TEST',
    à l’affichage on aura : **TEST
    où les ** représentent les deux espaces.

    Autre exemple : write('TEST' :2) ;
    cette fois ci, 2-4 = -2, on ramène à zéro les nombres négatifs, donc il n’y aura pas d’espace.
    à l’affichage on aura : TEST (pas d'espaces)

    J’espère avoir été assez claire pour que tu comprennes; si ce n’est pas le cas, je te conseil d’aller chercher des infos sur cet opérateur car il est très efficace lorsqu’il s’agit d’afficher des tableaux à l’écran.

  16. #16
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Dsl Mr , mais c'est toi qui m'ais pas compris !! moi je te parlais d'un cas spécial et je vais te donner un exemple pour bien sésir se que je voulais dire:
    ex:
    suposons que dans une meme ligne d'un matrice on a les deux entier suivant (qui sont l'un aprés l'autre): 1452 et 3698 ( par ex A[1,2] et A[1,3] respectivement)
    length('1452')=4 et length('3698')=4
    au moment de l'affichage ,si on met write(X:4 ); alors les deux entiers(qui se composent de 4 caractères ) seront coller l'un avec l'autre , et la matrice ne sera pas bien claire(elle s'affichera comme suit : 14523698 ) , mais parcontre si on mais un espace (write(X:4,' '); alors elle s'affichera comme suit : 1452 3698 .
    p.s: t'as compris se que je veux dire , ou tu veux que je développe un peut plus ??!

  17. #17
    Membre actif Avatar de Ultima
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 223
    Points : 261
    Points
    261
    Par défaut
    Bonjour,
    ce que je m’obstine à te faire comprendre et que j’ai pourtant déjà expliqué ici (lien) c’est que si l’élément à afficher à length = n, alors pour faire une tabulation, il faut mettre n+x derrière l’opérateur :
    x étant un entier positif strictement supérieur à 0.

    Pour ton exemple length = 4, donc il ne faudrait pas mettre write ('1452':4); ou write ('3698':4);
    Il faudrait mettre par exemple write('1452':6); ou write('3698':6);
    6=4+2, il y aura deux espaces devant le nombre à afficher, donc ces nombres ne vont pas être collés.

    Je persiste à croire que tu ne comprends pas le fonctionnement de l’opérateur : et je te conseil de faire des tests concrets en compilant par exemple le code que j’ai proposé.

  18. #18
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Merci pour l'explication mais je connais trés bien le fonctionement de :

    et pour ce qui est souligner , (moi je t'es donner simplement un example), on peut pas connetre le nombre de caractères que l'utilisateur va nous donner (moi je t'es donner simplement un example), alors pour une question de prudance , on met l'espace !! tu vois se que je veux dire ?!

  19. #19
    Membre actif Avatar de Ultima
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 223
    Points : 261
    Points
    261
    Par défaut
    Bonjour,
    La discutions porte sur l’affichage d’une matrice (array of QQCH) ;
    Cela implique que le développeur sait qu’au maximum un élément peut contenir X caractères.
    Donc ton excuse n’est pas valide.
    Au pire, le développeur peut faire une analyse avant l’affichage afin de détecter l’élément ayant le plus de caractères, ainsi la dimension du tableau sera variable. (en fonction de l’élément comportant le plus de caractères).

  20. #20
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Oui je vois se que tu veux dire ,mais moi j'ai mis l'espace juste par prudance (c'est plus prudent)! mais je comprend trés bien se que tu veux dire !!

Discussions similaires

  1. affichage d'une matrice carrée
    Par s-ehtp dans le forum C
    Réponses: 18
    Dernier message: 29/02/2008, 08h40
  2. Problème d'affichage d'une matrice
    Par zicoadis dans le forum Débuter
    Réponses: 4
    Dernier message: 26/01/2008, 17h36
  3. Affichage d'une matrice dans un edit
    Par harris_macken dans le forum Interfaces Graphiques
    Réponses: 15
    Dernier message: 22/11/2007, 21h35
  4. Réponses: 5
    Dernier message: 10/11/2007, 10h20
  5. Affichage d'une matrice
    Par ypascal dans le forum Pascal
    Réponses: 7
    Dernier message: 24/04/2006, 20h03

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