最完整的简单lua计算器

 [问题描述]

 用Lua实现一个能支持混合运算且容错率高的的简单计算器

[基本要求]

(1)通过命令读入一个合法的算术表达式,输出正确的结果。

(2)实现有理数处理,例如(-9)/-8+-114514*--2

(3) 能够处理省略乘号的表达,例如(114514*2)(9+114514)

以下就是代码,这是目前最为完整的计算器(不支持函数运算等),欢迎各位指点

--[[
  finish : 2024/1/14 08:29:27
  By : Yatwohee_是熙不是曦
]]
local args = {}
for i, v in ipairs(arg) do
  if v == "-i" then
    args["i"] = arg[i + 1]
  elseif v == "-s" then
    args["str"] = arg[i + 1]
  end
end


local insertval = {
  ["*"] = true,
  ["/"] = true,
  ["^"] = true,
}

local operators = {
  ["*"] = true,
  ["/"] = true,
  ["^"] = true,
  ["."] = true
}

local digits = {
  [0] = true,
  [1] = true,
  [2] = true,
  [3] = true,
  [4] = true,
  [5] = true,
  [6] = true,
  [7] = true,
  [8] = true,
  [9] = true
}

local function removeWhitespace(str)
  local result = ""

  for i = 1, #str do
    local char = str:sub(i, i)

    if char ~= " " then
      result = result .. char
    end
  end

  return result
end
local function splitString(inputString)
  local result = {}
  local currentIndex = 1

  while currentIndex <= #inputString do
    local char = string.sub(inputString, currentIndex, currentIndex)

    if char:match('%w') or char == '.' then
      local start, finish = string.find(inputString, "^[%w%.]+", currentIndex)
      local substring = string.sub(inputString, start, finish)

      table.insert(result, substring)
      currentIndex = finish + 1
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值