Histoire de briques

m_cyril1 Messages postés 59 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 3 juin 2005 - 26 avril 2005 à 10:20
m_cyril1 Messages postés 59 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 3 juin 2005 - 9 mai 2005 à 14:44
J’ai trois questions sur un problème.


C’est un problème d’empilement de briques. On part avec aucune brique et à chaque fois que l’on clique sur ajouter une brique vient s’ajouter. L’empilement des briques est réparti par rapport à un plan qui se situe au milieu de l’empilement. On ne connaît que l’épaisseur de chaque brique qui est stockée dans des TabValue (que j’ai nommée TabEpaisseur). Pour chaque brique il faut stocker l’altitude inférieure et supérieure. En gros schématiquement cela donne ça :




Question n°1: Comment fait t'on pour stocker les Zinf et Zsup de chaque brique
Question n°2: Comment faire pour insérer une brique "au milieu" chassant qu'on ne donne que le numéro de la brique ou sera inséré la nouvelle brique de la brique et que ça doit modifier les numéros ainsi que les Zsup et Zinf de toutes les briques (Et si l'on donne le numéro 0 la brique sera insérée en dessous de la brique1)

Question n°3: Comment faire pour supprimer une brique en donnant juste le numéro de la brique à supprimer et encore une fois ça doit aussi les numéros ainsi que les Zsup et Zinf de toutes les briques

19 réponses

slachz Messages postés 109 Date d'inscription lundi 21 avril 2003 Statut Membre Dernière intervention 1 janvier 2006
26 avril 2005 à 10:52
On apelle pas ça des "TabValue" lol, mais des Tableaux Dynamique..

sinon pour la question 1 tu fais un tableau a plusieur dimension:



en tableau statique : var TabStatic: array[100,100] of integer;

en tableau dynamic: var TabDynam: array of array of integer;



pour le reste euh... j'ai pas vrement regardé ^^'
0
slachz Messages postés 109 Date d'inscription lundi 21 avril 2003 Statut Membre Dernière intervention 1 janvier 2006
26 avril 2005 à 11:00
alalala, je devrais me relire avant de poster -_-



bon c'est très bète ce que je viens te dire ce qui faut faire plutot c'est créee un tableau de record:



declaration du type record:

type TBriquePos = record

Zinf, Zsup : integer;

end;



puis creation du tableau:

var TabEpaisseur: array of TBriquePos;



bon, relu ..ça a l'air d'aller ^^'
0
m_cyril1 Messages postés 59 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 3 juin 2005
26 avril 2005 à 11:36
OK! Des tableaux dynamiques!
Mais pas sous forme de matrice, juste sous forme de vecteurs:
var TabZsup:array of Real;
var TabZinf:array of Real;
C'est bête mais je n'arrive pas à utiliser ce que m'a indiquer
Autre détaille mon programme calcul aussi la hauteurtotale (ça pas de problème) mais ne la stocke pas.
0
m_cyril1 Messages postés 59 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 3 juin 2005
26 avril 2005 à 15:38
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />J'ai trouvé une solution , mais je pense qu'il doit y avoir plus simple:
(Tabht est le tableau des hauteurs totales)


procedure TCalcul.AjouterClick(Sender: TObject);


var i:Integer;


begin
inc(n);


SetLength(TabZinf,n);

SetLength(TabZsup,n);


Tabht[0]: =TabEpaisseur[0];


for i:= 1 to (Length(TabEpaisseur)-1) do


Tabht[i]: =Tabht[i-1]+TabEpaisseur [i];


Epaisseur.Text:= FloatToStr(Tabht[n-1]);


TabZInf[0]:=-Tabht[n-1]/2;


TabZsup[0]:=TabEpaisseur [0]-Tabht[n-1]/2;


for i: =1 to (Length(TabEpaisseur)-1) do


TabZInf[i]:= TabZInf[i-1]+TabEpaisseur [i];


for i: =1 to (Length(TabEpaisseur)-1) do


TabZSup[i]:= TabZSup[i-1]+TabEpaisseur[i];


End;



Ca marche, mais j'aimerais trouver plus simple et savoir pourquoi je suis obligé d'utiliser deux boucles pour stocker Zinf et Zsup, si je supprime la boucle avant
TabZSup[i]: =TabZSup[i-1]+TabEpaisseur[i]; ça marche pour une brique, mais après si ajoute d'autre briques il passe et reste à 0,je ne comprend pas
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
m_cyril1 Messages postés 59 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 3 juin 2005
26 avril 2005 à 16:04
Ha oui!! Pour mes questions 2 et 3, la je n'ai rien trouvé et je galère
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
27 avril 2005 à 00:44
Pour ne pas faire deux boucles :

for i:= 1 to (Length(TabEpaisseur)-1) do
begin
TabZInf[i]: =TabZInf[i-1]+TabEpaisseur[i];
TabZSup[i]:=TabZSup[i-1]+TabEpaisseur[i];
end ;

Pour tes autres questions, j'ai besoin de precisions (vu que les images que tu as posté sont invisibles!!).
Ton empilage de briques ressemble auquel de ceux qui sont après ?

1 _____ _____
| | |
__|__ __|__ __|__
|_____|_____|_____|
Alternance de briques de même épaisseur


2
_____ _____ _____
| | | |
|_____|_____|_____|
|_____|_____|_____|
Supperpositions de briques de même épaisseur

3
_____ _____ _____
| |_____| |
|_____| | |
| | |_____|
|_____|_____|_____|
Supperpositions de briques d'épaisseur variable

Cordialement.
0
m_cyril1 Messages postés 59 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 3 juin 2005
27 avril 2005 à 08:29
Non mes briques sont empilées verticalement, si l'on ajoute une brique elle vient par dessus les autres. Les briques sont numérotées de 1 à n, la brique 1 étamt la brique en bas de la pile. Et l'empilement est à chaque fois réparti par rapport à un plan qui se situe au milieu de l’empilement, autrement dit on a la hauteur totale (ht) donc entre le plan milieu et la face supérieur de la brique n (ou de la face inférieur de la brique 1) on a ht/2

PS: pour les images je n'y peu rien le serveur est coupé a partir de 18h, donc pas de serveur pas d'images
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
27 avril 2005 à 11:55
N.B. Les images n'apparaissent pas si elles sont sur un disque dur local. Ils faut les mettre en ligne.

Cordialement.
0
m_cyril1 Messages postés 59 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 3 juin 2005
27 avril 2005 à 14:23
Et comment fait t'on pour mettre une image en ligne
0
m_cyril1 Messages postés 59 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 3 juin 2005
28 avril 2005 à 08:38
Ho c'est énorme !


En plus j’allais poser la question pour créer un affichage comme tu as fais.


Ca répond plus que bien (c'est pas très Français ça) à mes deux premières questions mais j’ai pas été clair sur la suppression d’une brique en fait on donne tout simplement le numéro de la brique et on appui sur supprimer et hop elle disparaît
0
m_cyril1 Messages postés 59 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 3 juin 2005
28 avril 2005 à 10:30
Help je suis largué dans ton code!
Et en plus on m'impose d'utiliser des tableaux dynamiques pour la simplification des calculs que je dois faires par la suite (en fait à chaque brique est associé un numéro, un nom et des propriétés, et ces propriétés ce sont des chiffres qui sont réutilisés pour faire des calculs en fonction du numéro de la brique) .
Ce qui fait que je me noye un plus dans de plus en plus
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
28 avril 2005 à 11:46
Quelles sont les portions que tu ne comprends pas dans le code ?

Cordialement.
0
m_cyril1 Messages postés 59 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 3 juin 2005
28 avril 2005 à 11:53
Presque tout même avec les commentaires je suis perdu!
Comme je l'ai écrit dans d'autre message ça ne fait qu'un mois que je programme et je n'avais jamais de programmation avant et le pire c'est qu'on me demande des trucs de foux
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
28 avril 2005 à 12:10
Bon l'unité uBrique contient la définition d'une brique ainsi que sa représentation. C'est un objet TBrique qui hérite de TShape qui permettait déjà de représenter des rectangles et auquel on a ajouté des extensions.
Lorsque l'on ajoute une brique, on crée un nouvel objet TBrique que l'on stocke dans une liste FListeBriques (TList).

La fonction HauteurBriques calcul la hauteur totale des briques en parcourant les éléments de FListeBriques, c'est à dire les briques et en ajoutant leur épaisseur.

La fonction CalculerZBriques recalcule tous les Zinf et Zsup de chacune des briques contenue dans FListeBriques en commençant par celle du bas.
On sait que la plus basse des briques à son Zinf = -(Hauteur Totale/2), donc il est facile de calculer tous les autres Zinf et Zsup en utilisant les épaisseurs des briques.

La fonction InsererBrique insére une brique dans la liste, renumérote toutes les briques situées au dessus de l'insertion et appelle la fonction CalculerZBriques pour recalculer les Zinf et Zsup.

Tout le reste sert à la gestion du programme.

Cordialement.
0
m_cyril1 Messages postés 59 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 3 juin 2005
28 avril 2005 à 17:26
OK avec cette méthode!Mais je vais paraître vraiment lourd <?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /><v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"> </v:shapetype>je suis coincé avec mon histoire de tableaux dynamiques, je ne peut pas faire sans.
Le bout de code que j'ai mis un peut plus haut marche très bien d'un point de vu numérique (même si je n'est pas trouvé comment supprimer et insérer une brique), mais graphiquement je ne vois pas comment faire en utilisant i par exemple (i allant de 0 à n-1).
Parce que là si je rajoute des variables supplémentaires "juste" pour faire apparaître les briques (en fait c'est super important de les faire apparaitre ), déjà que je m'y perds avec mes 30 tableaux dynamiques et autant de variables, mes boucles et mes conditions, et en plus je vais pas tarder à rajouter une autre trentaine tableaux dynamiques avec d'autres variables associées et une petite base de données, alors je risque devenir dingue
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
28 avril 2005 à 19:54
J'ai mis à jours les sources avec l'utilisation d'un tableau dynamique au lieu d'un TList + insertion et suppression sur ce même tableau.

Cordialement.
0
m_cyril1 Messages postés 59 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 3 juin 2005
3 mai 2005 à 13:31
Je ne comprend pas j’ai téléchargé la source modifier, mais quand je l’ai ouverte, c’était la même que la fois précédente Pourtant la date de mise jours de la source correspond bien avec celle du message.


La source avec les tableaux dynamiques serait elle autre part


PS : Si en ce moment je mets un peu de temps à regarder mes messages et à répondre c’est que je suis en vacances, même si continu un peu à travailler pour éviter de perdre pied. Déjà que je suis limite, alors si j’arrête ça sera encore pire
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
3 mai 2005 à 13:39
Non ce n'est pas la même, regarde bien :
type
FListeBriques : array of TBrique ;

et non plus :
type
FListeBriques : TList ;

De même ajout des procédures d'insertion InsererBrique
et de suppression SupprimerBrique
d'une brique :

Cordialement.
0
m_cyril1 Messages postés 59 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 3 juin 2005
9 mai 2005 à 14:44
Pardon j'avais mal lu
Mais, encore une fois je suis coincé.
1-Je ne n'arrive pas à voir et à comprendre comment tu fais pour faire appel au deuxième Unit
2-Je n'arrive pas à modifier le:
Type FListeBriques : array of TBrique ;
en un simple tableau dynamique du type:
var TabHauteur:array of Real ;
3-A modifier tout le reste du programme
Je suis obligé d'utiliser ce genre de tableaux c'est beaucoup plus simple pour moi et mes calculs (c'est simple avec ce genre de tableaux et une ou deux boucle FOR je fait mes calculs sans problèmes ).
Pour toi la solution te parais peut être simple mais pour moi non.
En un mois et demi j'estime qu' on ne peut pas tout comprendre surtout que je ne fais pas que de la programmation et en plus la plupart des programmeurs parlent un langage de martien, HOOPS pardon je veut dire technique!!!
0
Rejoignez-nous