Message 1 of 15
I need correction in function given by Hak_vz
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
My list is
List = (25.0 164.0 137.0 0.0 132.5 158.5 181.5 0.0 192.0 0.0 204.5 0.0 215.5 183.5 75.5 82.5 25.0)
After running of this function is
Result = (4.0 21.4615 17.9282 4.0 17.3393 20.7417 23.7516 4.0 25.1257 4.0 26.7614 4.0 28.2009 24.0133 9.88014 10.7962 4.0)
I need correction is that where 0.0 there required also in 0.0 in result and summation is always as 230.
I have made some correction but result is not coming as I required.
Code:
(defun plus_minus (lst fitting) ; / plusp set_nth i sum_list k co cu su so e m p)
(defun plusp (num) (cond ((numberp num) (>= num 0.0))))
(defun set_nth (lst n value)
(cond
((and (plusp n) (<= n (length lst)))
(cond
((zerop n)
(cons value (cdr lst))
)
(t (cons (car lst) (set_nth (cdr lst) (1- n) value)))
)
)
)
)
(setq
i -1
sum_list (apply '+ lst)
k (/ (float fitting) sum_list)
cu 0
co 0
su 0
so 0
)
(while (< (setq i (1+ i)) (length lst))
(setq e (* k (nth i lst)))
(if (< e 4.0)
(setq su (+ su e) cu (1+ cu))
;(setq so (+ so e) co (1+ co))
(setq so 0)
)
(setq lst (set_nth lst i e))
)
(setq m (- fitting (* cu 4.0)))
(setq p (/ m (* (/ 1.0 k) so)))
(setq i -1)
(while (< (setq i (1+ i)) (length lst))
(setq e (nth i lst))
(if (<= e 4.0)
(setq lst (set_nth lst i 4.0))
(setq lst (set_nth lst i (/ (* e p) k)))
)
)
lst
)