OVH Cloud OVH Cloud

Quelle structure pour une matrice?

20 réponses
Avatar
Pascal
Bonjour,

Je dois implémenter une matrice de 4 colonnes qui contient :
int | int | une lettre | int

Sa taille est fixe en hauteur.

Quelle structure me conseillez vous?
--
Pascal

10 réponses

1 2
Avatar
Loïc Joly
Pascal wrote:

Fabien LE LEZ wrote:

Ben non, c'est a priori la solution canonique.



Wai bof. Pas vraiment canonique. minimal/simpliste oui. Je pense qu'une
classe est ce qu'il y a de mieux, mais j'espérais trouver une struct
déjà toute faite. Ca me semble bizarre qu'il n'existe pas de structure
pour des tableaux à plusieurs colonnes????


Ce qu'on te dit, c'est que l'exemple que tu as présenté n'est a
priori(*) pas un tableau à plusieurs colonnes. Nous n'y voyons qu'un
tableau à une seule colonne, cette colonne étant elle même composée de
plusieurs éléments.

(*) Le a priori vient du fait que sans savoir ce que tu veux en faire,
il est impossible de bien proposer une structure.

--
Loïc


Avatar
Pascal
Pascal wrote:
Bonjour,

Je dois implémenter une matrice de 4 colonnes qui contient :
int | int | une lettre | int

Sa taille est fixe en hauteur.

Quelle structure me conseillez vous?


Je cherche à implémenter un gestionnaire de mémoire virtuelle. Pour cela
il faut attribuer une adresse en mem virtuelle (1ere colonne) à
l'adresse en mémoire persistante (2e colonne). La 3e colonne m'indique
si l'élément est en lecture (lettre L) ou ecriture (E). La dernière
colonne est son ordre, cela va me servir pour l'algo LRU pour savoir
quel élément je vais supprimer si je veux rajouter un nouvel élément.


--
Pascal

Avatar
Alain Naigeon
"Pascal" a écrit dans le message news:
42015882$0$21738$
Pascal wrote:
Bonjour,

Je dois implémenter une matrice de 4 colonnes qui contient :
int | int | une lettre | int

Sa taille est fixe en hauteur.

Quelle structure me conseillez vous?


Je cherche à implémenter un gestionnaire de mémoire virtuelle. Pour cela
il faut attribuer une adresse en mem virtuelle (1ere colonne) à
l'adresse en mémoire persistante (2e colonne). La 3e colonne m'indique
si l'élément est en lecture (lettre L) ou ecriture (E). La dernière
colonne est son ordre, cela va me servir pour l'algo LRU pour savoir
quel élément je vais supprimer si je veux rajouter un nouvel élément.


A première vue ça fait penser à un empilement de lignes
plutôt qu'à une juxtaposition de colonnes ! Ca confirme
l'idée de structure, une instance correspondant à un élément.

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France


Avatar
kanze
Alain Naigeon wrote:
"Pascal" a écrit dans le message news:
42015882$0$21738$
Pascal wrote:

Je dois implémenter une matrice de 4 colonnes qui contient :
int | int | une lettre | int

Sa taille est fixe en hauteur.

Quelle structure me conseillez vous?


Je cherche à implémenter un gestionnaire de mémoire
virtuelle. Pour cela il faut attribuer une adresse en mem
virtuelle (1ere colonne) à l'adresse en mémoire persistante
(2e colonne). La 3e colonne m'indique si l'élément est en
lecture (lettre L) ou ecriture (E). La dernière colonne est
son ordre, cela va me servir pour l'algo LRU pour savoir
quel élément je vais supprimer si je veux rajouter un nouvel
élément.


A première vue ça fait penser à un empilement de lignes plutôt
qu'à une juxtaposition de colonnes ! Ca confirme l'idée de
structure, une instance correspondant à un élément.


C'est une question de vocabulaire. Dans le langage des bases de
données, on parle bien des colonnes dans ce cas-là. (Mais ce ne
sont pas les colonnes d'une matrice. Et quand on modèlise un
tableau d'une base de données en C++, c'est bien avec une struct
ou une classe.)

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34



Avatar
Pascal
On Thu, 03 Feb 2005 00:31:17 +0100, Alain Naigeon wrote:

A première vue ça fait penser à un empilement de lignes
plutôt qu'à une juxtaposition de colonnes ! Ca confirme
l'idée de structure, une instance correspondant à un élément.



Je n'ai jamais parlé de juxtaposition de colonnes. Donc un vector<struct
{int, int, char, int}> pourrait me convenir?

Avatar
Olivier Azeau
Pascal wrote:
On Thu, 03 Feb 2005 00:31:17 +0100, Alain Naigeon wrote:

A première vue ça fait penser à un empilement de lignes
plutôt qu'à une juxtaposition de colonnes ! Ca confirme
l'idée de structure, une instance correspondant à un élément.



Je n'ai jamais parlé de juxtaposition de colonnes. Donc un
vector<struct

{int, int, char, int}> pourrait me convenir?


Le plus simple pour savoir cela c'est de l'essayer !!!

Ca ne coutera pas grand chose de changer apres coup si besoin est,
surtout si ta structure est bien cachée par une interface
représentant ton besoin et que tu écris des tests correspondant a
cette interface.
Il y en a peut etre qui te diront qu'il faut terminer ta conception
avant de coder mais bon...


Avatar
Fabien LE LEZ
On 3 Feb 2005 04:02:56 -0800, "Olivier Azeau" :

Il y en a peut etre qui te diront qu'il faut terminer ta conception
avant de coder


Dans la phase de production, c'est discutable.
Mais ça me paraît faux dans une phase d'apprentissage.


--
;-)

Avatar
Pascal
On Thu, 03 Feb 2005 04:02:56 -0800, Olivier Azeau wrote:

Il y en a peut etre qui te diront qu'il faut terminer ta conception
avant de coder mais bon...


C'est ce que je fais. Je suis en phase de conception. Donc oui je la
termnie avant de commencer à programmer.

Avatar
Alain Naigeon
"Pascal" a écrit dans le message news:

On Thu, 03 Feb 2005 00:31:17 +0100, Alain Naigeon wrote:

A première vue ça fait penser à un empilement de lignes
plutôt qu'à une juxtaposition de colonnes ! Ca confirme
l'idée de structure, une instance correspondant à un élément.



Je n'ai jamais parlé de juxtaposition de colonnes. Donc un vector<struct
{int, int, char, int}> pourrait me convenir?


Tu prends un papier et tu te demandes quelles opérations
essentielles tu auras à faire sur ces données. Quelles sont
les plus fréquentes ; si tu peux avoir un ordre de grandeur de
leur fréquence relative, c'est encore mieux. Et puis, sur quoi
portent-elles la plupart du temps ? Sur les 4 données d'un
même élément, ou peut-être d'un couple d'éléments ? Ou
plutôt sur une ou plusieurs données d'une même colonne ?
James a relevé un préjugé et un usage malvenu de colonne
dans mon propos, toutefois "l'univers du problème" incite
parfois à penser "lignes" même en sachant que les BD parlent
de colonnes. Si tu gères des personnes, tu vas penser lignes,
et si tu fais de la sociologie ou de la démographie, tu vas
peut-être penser "colonnes". Et si tu es dans le cas douloureux
ou tu dois faire les deux, il te faudra trancher après quelques
réflexions suggérées plus haut.
Je pense que tout le monde fait ainsi, à son propre niveau
de compétence. Pour le reste, c'est comme aux échecs,
certains voient plus loin que d'autres.

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France


Avatar
kanze
Fabien LE LEZ wrote:
On 3 Feb 2005 04:02:56 -0800, "Olivier Azeau" :

Il y en a peut etre qui te diront qu'il faut terminer ta
conception avant de coder


Dans la phase de production, c'est discutable.
Mais ça me paraît faux dans une phase d'apprentissage.


Tout à fait. Il ne faut pas prendre les arguments hors
contexte@; ce qu'il faut pour créer un code de production n'est
pas forcement nécessaire lorsqu'on expériment pour apprendre des
choses. (Encore que... Je me suis fais avoir tout récemment,
parce que dans un expériment, je n'ai pas testé la valeur de
rétour d'une fonction.)

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


1 2