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!
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!
j'ai fait un truc dans ce style
mais donc là, il m'affiche tous les coeff à la suite séparés par des virgules...
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;
quelqu'un peut-il m'aider pour améliorer ceci ?
merci
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.
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; ...
Bonsoir,Si le but est effectivement de faire une affichage sous forme de tableau alors cette méthode n’est pas approprié du tout.Envoyé par The Bronx 05
En effet, si les nombres à afficher n’ont pas le même nombre de chiffre, alors on n’aura pas de tableau à l’affichage.
Là je rejoins tout à fait droggo dans ce qu'il dira si jamais il lit ça :Envoyé par williamdunord
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 !
Yes,
Voilà qui m'évite de l'écrire une fois de plus.Envoyé par Loceka
![]()
Envoyé par Ultima
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,Envoyé par The Bronx 05
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 ?
;
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
oui....Envoyé par zizo89
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 ?
Pour repondre à tes question :Envoyé par Ultima
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
)
Bonjour,Envoyé par The Bronx 05
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.
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 ??!
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é.
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 ?!
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).
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 !!![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager