Aller au contenu

fiesta13310

Membres
  • Compteur de contenus

    363
  • Inscription

  • Dernière visite

Tout ce qui a été posté par fiesta13310

  1. haaa... il semblerait que j'ai trouvé en utilisant ce que tu m'avais donné l'autre fois en faisant le < 0.5(fix N1)...
  2. Salut! J'espère que le week end a été bon! Je commence a comprendre plein de choses, c'est cool de se faire aider! Merci infiniment! c'est super dur la programmation,surtout quand on débute, mais c'est aussi très interessant! je fais ça avec beaucoup de plaisir et j'aime arriver à bout de mes projets! C'est la raison pour laquelle je ne baisse jamais les bras. Je voudrais savoir si je suis sur la bonne voie. Alors voilà en quoi consiste précisément ma programmation : Actuellement, j'ai une boite DCL qui renseigne le nombre de banches disponible sur chantier en 250, 125, 62.5, 50, 40, 30 et 20. C'est par là que débute mon projet. Cette boite DCL me renvoie mon fameux N250. Une fois ces valeurs rentrées, un programme que j'ai nommé (longvoile) se lance. Et c'est sur ce programme que porte toutes mes questions. Ce programme commence par me demander de sélectionner (sur le plan) le voile que je voudrais bancher. Il me renvoie une longueur , le fameux L1. Ensuite, il me demande si j'ai 0, 1 ou 2 arrêts (soit mon fameux A); autrement dit, si ce voile est tout seul isolé (d'où A=2), s'il continue un voile en cours (A=1)ou bien s'il est compris entre 2 autres voiles (A=0, pas besoin d'arrêt dans ce cas). Suite à ça, pour calculer le nombre de banches nécessaire de manière à coffrer le plus possible mon voile, je veux que mon programme fasse en premier : L1/2.50 = N1 (avec N1 le nombre de banche nécessaires) Si (N1<= N250 et A=0) ; si j.ai assez de banche 2.50 et que je n.ai pas d.arrêt Alors : Si (L1< 2.50m) ; si la longueur de mon voile est plus petite que 2.50m Alors "on passe au test suivant" ; alors il me faut une banche plus petite que 2.50m Sinon "on met N1 banche de 250 en place" ; sinon mon voile est plus grand, alors on met N1 banche de 250 (N1 doit être un entier! :) )et on coffre le restant du voile avec des banches plus petite si possible. Sinon : Si N1 est un entier ; sinon,si j.ai assez de banche 2.50 mais que j.ai au moin un arrêt Alors "on met N1 banche de 250 + 1 banche de 62.5" ; Soit je trouve N1= à un entier et je met N1 banche de 250 + juste une banche de 62.5 Sinon : (N1+1) "banches de 250" ; soit je trouve N1= à un réel alors je prend N1 entier et je lui rajoute une banche de 2.50 Si (N1> N250) ; pour finir, si j.ai besoin de plus de banche de 250 que ce que je dispose, Alors "on met N250 banches de 2.50m" ; alors je met toute mes banches de 2.50m disponible sur chantier, et je passe au programme suivant. Comme tu peux le voir, il y a beaucoup de condition et de si, mais c'est la "clé" de mon programme. Est-ce que je me complique la vie? ça semble être correct? Merci d'avance, et je te souhaite une exéllente journée! @++
  3. c'est quoi le bon forum?
  4. Bonjour! tout d'abord merci de m'avoir répondu! En fait, 4.8 j'ai pris au hasard, je n'ai pas fait de calcul ou quoi que ce soit, c'était juste pour donner un nombre réel. Ce n'est pas exactement ça. ce que je cherche à savoir c'est que si mon N1 est un nombre décimal, j'arrondi en dessous , que j'obtienne 4.1 ou 4.9, je veux toujours arrondir à 4. Et si je suis obligé d'arrondir , alors je dois ajouter une demi banche. Les réponses qui suivent dans mes conditions comme "test 3" "impossible"... sont là juste pour essayer de me faire comprendre par vous. En réalité, elles renvoient toute à une autre fonction. Mais avant de l'inclure dans mon programme, je fais des essais pour voir si j'obtiens ce que je veux. En réalité, mon programme commence par une boite dcl ou dedans, je renseigne directement le nombre de banche et le nombre d'arrêt. pour répondre à ta question les arrêts sont des arrêts de bétonnage.quand on installe une banche, c'est pour couler du béton, et si les banches ne sont pas posionnées contre un mur,il faudra mettre des arrêts d'épaisseur 20 cm au minimum à l'intérieur des banches pour arrêter le béton... Donc en fait, si une banche ne vient pas reprendre la continuité d'un mur, il faut mettre 2 arrêts. Si elle vient continuer un mur, il faut mettre qu'un arrêt, et si elle se postionne entre 2 murs, on ne met pas d'arrêt. Je ne sais pas si tu comprend tout, mais c'est ça que j'essai de faire. Bonne journée Cordialement
  5. Encore une question : Voici mon programme : (defun c:test2 () ; on définit les variables (setq L1 (getint "\n Combien y'a t-il de mètre?")) (setq n (getint "\n Combien y'a t-il d'arrêt?")) (setq A n) (setq N1 (/ L1 2.50)) ; nombre de banche nécessaire (setq N250 (getint "\n Combien y'a t-il de 250")); nombre de banche dispo (cond ((> N1 N250) (setq reponse (strcat " test3 "))) ((= A 0) (setq reponse (strcat " impossible "))); si pas d arrêt, alors une banche plus petite ((= A n) (setq reponse (strcat(rtos N1) "banche de 250? "))); on met N1 banche de 250 en place ((setq reponse (strcat " ne rien faire pour l'instant "))) );fin cond ); fin test2 mes conditions marchent très bien, c'est ce que je voulais faire. Mais j'ai un autre soucis: pour le cas ou A=n, mon résultat m'affiche N1 banche de 250. Si N1 est un entier, pas de problème! Mais si N1 est un réel, je voudrais qu'il m'affiche: N1 banche de 250 + 1 banche de 125. Par exemple, supposons que N1= 4.8 je voudrais comme réponse : 4 banche de 250 + 1 banche de 125. je dois utiliser Atoi et Atof? mais comment?
  6. ha oui, c'est exact, j'arrive pas à me dire que "cond" raisone pareil que "si" ...mais ca commence à rentrer tout ça, merci!
  7. Bonjour, oui c'est la première fois que je discute sur le forum. Merci pour ton aide, mais dans ton programme quelque chose me chagrine : Alors avec cond: (cond ((> N1 N2) "(N1> N2) alors faire le programme suivant") ((= A 0) "si (N1< N2 ET A=0) alors ...") ((= A n) "si (N1< N2 et A=n) alors...") (T "Ne rien faire ou faire autre chose à définir..") ) Note: Remplace les expressions entre guillemets par les actions que tu désires entreprendre. Quand N1>N2, on passe au programme suivant, on est d'accord. Mais pour le reste, comment il sait que c'est quand N1<N2?
  8. haaaa!! ok, c'est bon, j'ai compris! Merci pour les info, on nous dis rien nous à l'école, la seule fonction "si" qu'on a vu, c'est la fameuse fonction récursive factorielle N! alors je vais pas loin avec ça... en tout cas merci beaucoup!
  9. oui voila ok, merci beaucoup, je vais essayé de faire tout ça! :)
  10. ha non justement, c'est là que je dois utiliser progn parce que j'ai plusieurs informations quand je dis N1<N2 et A=0... c'est ca?
  11. je créé un programme pour faire de la rotation de banche, c'est mon projet de fin d'étude. donc en fait, si j'avais utilisé la fonction "si" a la place de "cond", progn j'aurai du l'insérer dans ma fonction "si" c'est ça? Et si je veux faire : si (N1< N2 ET A=0) alors ... ou bien, si (N1< N2 et A=n) alors... sinon, si (N1> N2) alors "faire le programme suivant"
  12. Non en fait c'est bon, j'ai trouvé... en tout cas merci beaucoup. Ha oui, j'ai une question qui n'a rien à voir, à quoi ca sert d'écrire "progn" dans des programme ? Par exemple : (setq n (fix nbre)) (set q (+ 1 n)) (repeat n (progn (setq p3... (command ... (setq p1... ) )
  13. ok, merci beaucoup! j'avais pas compris non plus à quoi servait la fonction cond. Bon maintenant, à chaque fois que je rentre une valeur A=n, je veux que L1=L1+(n*0.20). comment dois-je faire à partir de là? (setq A (getint "\n Combien y'a t-il d'arrêt?")) (cond ((= A 0) (setq L1 L1)) ((= A 1) (setq L1 (+ L1 0.20))) ((= A 2) (setq L1 (+ L1 0.40))) ); Fin cond (setq reponse (strcat " la longueur totale est " (rtos L1 ) " mètres"))
  14. Bonjour tous le monde! Je débute en lisp, je dois créer un programme, mais je ne comprend pas la fonction "si" , je m'explique : J'ai compris qu'il s'agit de la condition alternative qui retourne une valeur en LISP et qui s'écrit sous la forme : (if <condition> alors <faire si vrai> sinon <faire si faux>) moi ce que je veux veux écrie comme forme ressemble à ceci : (si <condition> alors <faire si vrai> ou bien si <condition> alors <faire si vrai> ou bien si <condition> alors <faire si vrai> ) J'ai bien compris qu'il me manque le "sinon <faire si faux>, et justement, c'est là que j'ai besoin d'aide.Il est évident qu' il y a quelque chose que je n'ai pas compri. Pour être plus précise, voici ce que je veux programmer : soit: L1 la longueur d'un voile et A le nombre d'arrêt (Si A=0 alors L1 = L1 Si A=1 alors L1 = L1+0.20 Si A=2 alors L1 = L1+0.40) Ce n'est pas très compliqué, mais moi ca m'échape! Merci de bien vouloir me répondre, et bonne journée à tus!
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité