Copyright © 2004-2022 SQL: 1.19 saniye - Sorgu: 54 - Ortalama: 0.02204 saniye
01.12.2012 12:18
k005 |
Merhaba arkadaşlar;
Kod: (Defun C:he() (setq pb (getreal "\nProfil boyu : ")) (setq eb (getreal "\nEleman boyu : ")) (setq um (getreal "\nİmalat adedi : ")) (setq umb (* eb um)) (setq tamb (/ umb pb)) (setq kln (- pb eb)) ;(if kln < eb (princ "\nSonuç : ") (princ (strcat "" (rtos tamb 2 2)"")) (princ) ) kalan malzeme miktarını ve boyunu hesaplayan bir lisp üzerinde çalışıyorum,, if yapısı konusunda takıldım.. daha doğrusu, kodlama ne şekilde olmalı.. örnek: IPE 360 lık profil standart boy : 12 mt makas elemanı boyu : 7.40 mt imalat adet : 10 buradan 7.40*10 = 74 mt 74 mt /12 mt = 6,166 adet = 7 adet (boy) profil. (7*12 = 84 mt) 84mt - 74 mt = 10 mt kalan malzeme toplam boyu... bir makas boyunda sadece bir ek olabilir.. bu durumda kalan malzeme miktarını ve boyunu nasıl kodlayabilirim..? yardımcı arkadaşa şimdiden teşekkürler.. herkese kolay gelsin..
|
03.12.2012 14:50
Travaci |
Bakıorum ama anlamıyorum sanırım, if lik bir durum göremiyorum ben, tanımladığınız sayısal işlemi, yukarıda nasıl yaptıysanız aynı şekil yapıcak bir sonuç daha göstericeksiniz..Yanlışmıyım ?
|
03.12.2012 15:44
k005 |
Alıntı
|
07.12.2012 15:32
ProhibiT |
Özetin özeti şeklinde "if yapısı" olarak bahsettiğiniz "Algoritma" olsa gerek.
Kod: ;|***************************************************************************| | CwMw: Cutting with Minimum waste | | Author: M. Şahin Güvercin www.cizimokulu.com 07.12.2012 | |---------------------------------------------------------------------------|; (defun c:CwMw (/ ArtanBoyu ArtanParcaBoyu Boy Ek ParcaBoyu ParcaNumarasi ParcaSayisi ProfilLBoyu ProfilSayisi) (setvar "cmdecho" 0) (command "_.undo" "group") (setq ProfilBoyu (getreal "\n Profil Boyu: ") ParcaBoyu (getreal "\n Parça Boyu: ") ParcaSayisi (getint "\nParça Sayısı: ") ProfilSayisi (1+ (fix (/ (* ParcaSayisi ParcaBoyu) ProfilBoyu))) ArtanBoyu (- (* ProfilSayisi ProfilBoyu) (* ParcaBoyu ParcaSayisi))) (princ (strcat "\n Profil Boyu (m.) : " (rtos ProfilBoyu 2 2))) (princ (strcat "\n Parça Boyu (m.) : " (rtos ParcaBoyu 2 2))) (princ (strcat "\n Parça Sayısı (Adet): " (itoa ParcaSayisi))) (princ (strcat "\nArtan Parça Boyu (m.) : " (rtos ArtanBoyu 2 2) "\n")) (setq ParcaNumarasi 0 ArtanParcaBoyu 0 Ek "Ek Yok") (while (< ParcaNumarasi ParcaSayisi) (setq ParcaNumarasi (1+ ParcaNumarasi)) (if (equal ArtanParcaBoyu 0.0 5.0E-8) (setq Ek "Ek Yok" Boy (strcat "L=" (rtos ParcaBoyu 2 2)) ArtanParcaBoyu (- ProfilBoyu ParcaBoyu)) (setq Ek "Ek Var" Boy (strcat "L=" (rtos ArtanParcaBoyu 2 2) "+" (rtos (- ParcaBoyu ArtanParcaBoyu) 2 2) "=" (rtos ParcaBoyu 2 2)) ArtanParcaBoyu (- ProfilBoyu (- Parcaboyu ArtanParcaBoyu)))) (princ (strcat (if (< ParcaNumarasi 10) "\n " "\n") (itoa ParcaNumarasi) ". Parça, " Ek ", " Boy ", Kalan Parça: " (rtos ArtanParcaBoyu 2 2) " m.")) (while (and (> ArtanParcaBoyu ParcaBoyu) (/= ParcaNumarasi ParcaSayisi)) (setq Ek "Ek Yok" Boy (strcat "L=" (rtos ParcaBoyu 2 2)) ParcaNumarasi (1+ ParcaNumarasi) ArtanParcaBoyu (- ArtanParcaBoyu ParcaBoyu)) (princ (strcat (if (< ParcaNumarasi 10) "\n " "\n")(itoa ParcaNumarasi) ". Parça, " Ek ", " Boy ", Kalan Parça: " (rtos ArtanParcaBoyu 2 2) " m.")))) (command "_.undo" "e") (princ)) Profil Boyu (m.) : 12 Parça Boyu (m.) : 7.4 Parça Sayısı (Adet): 10 Artan Parça Boyu (m.) : 10 1. Parça, Ek Yok, L=7.4, Kalan Parça: 4.6 m. 2. Parça, Ek Var, L=4.6+2.8=7.4, Kalan Parça: 9.2 m. 3. Parça, Ek Yok, L=7.4, Kalan Parça: 1.8 m. 4. Parça, Ek Var, L=1.8+5.6=7.4, Kalan Parça: 6.4 m. 5. Parça, Ek Var, L=6.4+1=7.4, Kalan Parça: 11 m. 6. Parça, Ek Yok, L=7.4, Kalan Parça: 3.6 m. 7. Parça, Ek Var, L=3.6+3.8=7.4, Kalan Parça: 8.2 m. 8. Parça, Ek Yok, L=7.4, Kalan Parça: .8 m. 9. Parça, Ek Var, L=.8+6.6=7.4, Kalan Parça: 5.4 m. 10. Parça, Ek Var, L=5.4+2=7.4, Kalan Parça: 10 m. Bu algoritmaya göre kesim yapılınca, Hem hiç bir parçada birden fazla ek olmaz, hem de son kesimden sonra artan parça (örnekte 10 m.) tek parça halinde kalır başka bir imalatta işimize yarar. ProhibiT (08.12.2012 08:17 GMT) |
k005 |
Alıntı
|