All pastes #778652 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-11-17 20:10 UTC
rendered paste body
;w
Menu * {
  -
  Enterprise Calculation:/dialog -md Math Math
  -
}
alias F6 {
  /dialog -md Math Math
}
Dialog Math {
  Title "Enterprise Calculation By Ano"
  size -1 -1 150 100
  option dbu
  Edit "Vraag", 1, 2 2 98 10
  Edit "Antwoord", 2, 2 14 98 10, read
  Button "1", 3, 2 26 15 15
  Button "2", 4, 17 26 15 15 
  Button "3", 5, 32 26 15 15
  Button "4", 6, 2 41 15 15
  Button "5", 7, 17 41 15 15
  Button "6", 8, 32 41 15 15
  Button "7", 9, 2 56 15 15
  Button "8", 10, 17 56 15 15
  Button "9", 11, 32 56 15 15 
  Button "0", 12, 2 71 15 15
  Button ".", 13, 17 71 15 15
  Button "-", 14, 32 71 15 15
  Button ":", 15, 50 26 15 15
  Button "X", 16, 50 41 15 15
  Button "-", 17, 50 56 15 15
  Button "+", 18, 50 71 15 15
  Button "Ok", 19, 2 88 78 10
  Button "²", 20, 65 26 15 15
  Button "^", 21, 65 41 15 15
  Button "Sqrt", 22, 65 56 15 15
  Button "xSqrt", 23, 65 71 15 15
  Button "[", 24, 83 71 15 15
  Button "]", 25, 98 71 15 15
  Button "Sin", 26, 83 26 15 15
  Button "aSin", 27, 98 26 15 15
  Button "Cos", 28, 83 41 15 15
  Button "aCos", 29, 98 41 15 15
  Button "Tan", 30, 83 56 15 15
  Button "aTan", 31, 98 56 15 15
  Button "(", 32, 83 88 15 10
  Button ")", 33, 98 88 15 10
}
on *:dialog:math:sclick:*: {
  if (%thingie == on) { 
    set %thingie off
    did -r $dname 1
  }
  if ($did == 16) { 
    did -a $dname 1 *
    halt
  }
  if ($did isnum 3-21 || $did isnum 24-25 || $did isnum 32-33)) && ($did != 19) {
    if ($did(math,1) == vraag) did -r $dname 1
    set %calc $did(math,1) $+ $did(math,$did)
    did -ra $dname 1 %calc
  }
  if ($did isnum 26-31 || $did isnum 22-23) {
    if ($did(math,1) == vraag) did -r $dname 1
    set %calc $did(math,1) $+ $iif($right($did(math,1),1) == [, $+,$chr(32)) $+ $did(math,$did) $+ (
    did -ra $dname 1 $remove(%calc,])
  }
  elseif ($did == 19) {
    set %tocalc $did(math,1)
    //echo -a test
    set %tocalc1 $replacex(%tocalc,:,/,asin,$chr(36) $+ asin,atan,$chr(36) $+ atan,acos,$chr(36) $+ acos,sin,$chr(36) $+ sin,cos,$chr(36) $+ cos,tan,$chr(36) $+ tan,²,^2,sqrt,$chr(36) $+ sqrt)
    //echo -a test
    if (x$sqrt isin %tocalc1) wortel
    if ($chr(40) isin %tocalc1) replica 40
    if ($chr(41) isin %tocalc1) replica 40
    if ($chr(91) isin %tocalc1) replica 50 yep
    if ($chr(93) isin %tocalc1) replica 50 yep
    set %tocalc3 $eval(%tocalc2,2)
    set %tocalc4 $calc(%tocalc3)
    did -ra $dname 2 %tocalc4
    set %thingie on
  }
  else {
  }
}
alias wortel {
  set %wortel $pos(%tocalc1,x$sqrt,1)
  var %x = $calc(%wortel - 1)
  while ($right($left(%tocalc1,%x),1)) {
    if (%x > 20) break
    if ($right($left(%tocalc1,%x),1) == $chr(41)) {
      //echo -a $right($left(%tocalc1,%x),%wortel)
    }
    inc %x
  }
}
alias replica {
  unset %repinc*
  :rep
  if (%tocalc1) {
    if ($1 == 40) {
      set %chr1 40
      set %chr2 41
    }
    if ($1 == 50) {
      set %chr1 91
      set %chr2 93
    }
    unset %replica
    var %r = 1
    while ($right($left(%tocalc1,%r),1)) {
      if ($lower($right($left(%tocalc1,%r),1)) == $chr(%chr1)) { 
        inc %replica
        if ($2) set %repinc [ $+ [ %r ] ] %r $+ T
      }
      if ($lower($right($left(%tocalc1,%r),1)) == $chr(%chr2)) { 
        dec %replica     
        if ($2) { 
          set %repinc [ $+ [ %r ] ] %r $+ F
          set %rep $var(%repinc*,0)
          set %imp $calc($left($eval($var(%repinc*,%rep),2),-1) -1) 
          set %imp2 $left($eval($var(%repinc*,$calc(%rep - 1)),2),-1)
          set %imp3 $calc(%imp - %imp2)
          set %imp4 $calc($right($left(%tocalc1,%imp),%imp3))
          set %imp5 $left(%tocalc1,$calc(%imp2 - 1))
          set %imp6 $right(%tocalc1,$calc($len(%tocalc) - $calc(%imp + 1)))
          set %tocalc2 %imp5 $iif(%imp5 isnum,*) $iif(%imp4 != 0,%imp4, $+ ) $iif(%imp6 isnum,*) $remove(%imp6,],[)
          break
        }
      }
      if (%r >= $len(%tocalc1)) break
      inc %r
    }
    if (%replica > 0) && (%chr1 == 40) set %tocalc1 $did(math,1) $+ $str($chr(%chr2),%replica)
    if (%replica < 0) did -ra math 1 Error
  }
  unset %chr1
  unset %chr2
}