首页 > 其他分享 >计算器第二日进展

计算器第二日进展

时间:2024-01-10 17:35:53浏览次数:31  
标签:end 进展 ops nums 括号 计算器 table 第二日

目录
今天计算器进展还挺多下面一一列举

进展

更多符号的支持,现在可以进行幂运算和求余运算

--规定符号的优先级,目前是只有加减乘除
OperationLevel = {
    ['+'] = 1,
    ['-'] = 1,
    ['*'] = 2,
    ['/'] = 2,
    ['%'] = 2,
    ['^'] = 3,
}
//calc中
elseif op == '^' then
        table.insert(clc.nums, a ^ b)
    elseif op == '%' then
        table.insert(clc.nums, a % b)

更多括号的支持

现在可以使用中括号大括号了[]{}

持续输入,自动记录上一次的运算结果

我的解决办法是在clc文件中声明了一个全局存数字的table nums,计算完成后就把结果导入到nums之中,这个全局nums是用于存表达式数字的,因此新数字也会被存进去

命令行

quit/q退出,clear清除全局栈,可以进行新的运算了

--quit q退出,clear清除缓存,readfile读取文件
    if S=="q" or S=="quit" then
        break
    elseif S=="clear" then
        while #clc.nums>0 do
            table.remove(clc.nums)
        end
        table.insert(clc.nums,0)
        goto continue

输入检测

  1. 对于中文括号,我们在输入检测时直接将其替换为英文符号
  2. 括号是否成对出现,简单的栈的应用,遇到左括号入栈,右括号如果栈顶是对应左括号就出栈,最后检测栈是否为空
--检验括号
function check.CheckBrackets(s)
    local ops = {}
    local i=1
    local n=string.len(s)
    while i<=n do
        local c=string.sub(s,i,i) 
        if c=='('or c=='{'or c=='[' then
            table.insert(ops,c)
        end
        if c==')' then
            if #ops>0 and ops[#ops]=='(' then
                table.remove(ops)
            else
                return false
            end
        end
        if c==']' then
            if #ops>0 and ops[#ops]=='[' then
                table.remove(ops)
            else
                return false
            end
        end
        if c=='}' then
            if #ops>0 and ops[#ops]=='{' then
                table.remove(ops)
            else
                return false
            end
        end
        i=i+1
    end
    return #ops==0

end

优化

怎么优化功能呢,我也不清楚,目前的思路是加一个文件输入喽,可以读取文件内容然后输出一个result.txt当中有结果
然后看看chatgpt的思路

你目前的计算器已经具备了基本的四则运算、幂运算和求余的功能,同时支持三种括号、持续输入、记录上一次的结果,并且允许用户退出和清除结果。以下是一些可能的额外功能,你可以考虑根据你的需求和时间允许程度来决定是否添加它们:

1. 科学计算功能:添加更多的数学函数,如三角函数、对数函数、指数函数等。这将使计算器具备更广泛的数学计算能力。

2. 单位转换:添加单位转换功能,例如长度单位、重量单位、温度单位等的转换。这将使计算器在实际应用中更加实用。

3. 历史记录:实现一个历史记录功能,可以保存用户的计算历史,以便查看和重新检查之前的计算结果。

4. 变量支持:允许用户定义和使用变量,以便在计算中保存和重用中间结果。

5. 角度模式切换:添加角度模式切换功能,允许用户在弧度和角度之间进行切换,方便处理三角函数计算。

6. 错误处理:改进错误处理机制,提供更友好的错误提示和输入验证,以增强计算器的健壮性。

7. 用户界面优化:改进用户界面,提供更友好和直观的交互方式,如使用图形界面、选择菜单等。

请注意,在添加新功能之前,要确保现有功能的正确性。同时,考虑你的时间和编程技能,逐步引入新的功能,以防止过度复杂化。根据你的需求和目标用户,选择合适的功能来增强计算器的功能和实用性。

希望这些建议对你有所帮助!如果你对某个特定功能有更多的问题或需要更多指导,请告诉我。

疑问

  1. 在终端里执行的时候有时候按到→⬅这些键都会造成括号检测失败,不知道输入了什么东西
  2. 在vscode里面的终端里面执行的时候,我输入中文括号并不能被正确的修正,同样的一段直接写死在文件里或者是用gitbash界面输入都是可以正确处理的

标签:end,进展,ops,nums,括号,计算器,table,第二日
From: https://www.cnblogs.com/liviayu/p/17956962

相关文章

  • 计算器算法
    目录思路最简单的计算器(好像也不简单,因为有*/)224772困难计算器可以通解224227和上面的题先把力扣上5道计算器的题目干了,主要使用双栈法思路用一个栈ops存操作,用一个栈nums存数字然后从前往后做,对遍历到的字符做分情况讨论:空格:跳过(:直接加入ops中,等待与之匹配的......
  • 多业务光端机的技术进展与应用策略
    随着光通信技术的飞速发展,多业务光端机已成为现代通信网络不可或缺的一部分。这种设备能够在单一平台上处理多种类型的信号,包括语音、数据和视频等,极大地提高了网络的灵活性和效率。本文将探讨多业务光端机的最新技术进展和在实际应用中的策略。技术进展集成化设计:现代多业务光端机......
  • Android 期末大作业 - 简单计算器,一键运行
    项目介绍项目功能界面预览项目备注1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程......
  • WAVE SUMMIT+ 2023倒计时2天,传文心一言将曝最新进展!
    10句话2分钟,挑战成功说服宿管阿姨开门,这个人群中的“显眼包”是一个接入文心大模型4.0游戏里的NPC,妥妥“工具人”实锤~尝试用AI一键自动识别好坏咖啡豆,看一眼便知好坏,真正“颜值即正义”,让咖啡星人狂喜~借助AI在任何平面上模拟的钢琴,即兴“弹奏”世界名曲,开一场科技感满满的专属演奏......
  • 数据光端机技术进展:高速数据通信的未来
    在信息技术迅猛发展的今天,数据光端机已站在高速数据通信的前沿。它不仅象征着通信技术的飞跃,还为海量数据的迅速传递铺平了道路。核心特征超高速的传输效率数据光端机利用尖端光纤技术,实现了前所未有的数据传输速度。这一跳跃性的提升,源自光纤的广阔带宽和微乎其微的损耗。难以匹敌......
  • 北京师范大学心理学部副部长骆方:智能化人才测评技术进展
    在12月15日举办的用友大易2023人才管理与HR数智化年度论坛中,北京师范大学心理学部副部长骆方教授进行了有关「智能化人才测评技术进展」的主题演讲。以下内容根据骆方教授演讲内容整理而成。目前,人才测评其实面临着非常大的挑战。第一,目前我们缺乏一套对“完人”的有效测评机制,尽管......
  • 论文笔记:全同态加密研究进展-白利芳等
    论文笔记:全同态加密研究进展-白利芳等同态加密–概念同态性给定2个代数结构间的映射,\(\delta:A\toB\),满足\(\delta(x*_Ay)=\delta(x)*_B\delta(y)\),这里这种映射\(\delta\)就可以看作是同态加密中的“加密”操作,即明文进行\(*_A\)计算,加密后相当于密文进行\(*_B\)计算,所......
  • RNN语言模型的最新进展与未来趋势
    1.背景介绍自从2010年的深度学习革命以来,深度学习技术已经成为人工智能领域的核心技术之一,其中自然语言处理(NLP)也是其中的一个重要应用领域。在NLP中,语言模型是一个非常重要的组件,它用于预测给定上下文的下一个词。传统的语言模型如N-gram模型和条件随机场(CRF)模型已经被深度学习中......
  • 【UniApp】-uni-app-项目计算功能(苹果计算器)
    前言本文主要介绍苹果计算器项目中计算功能的实现在前面的文章中已经实现了输入,动态计算字体大小,以及计算器的布局本文主要介绍计算功能的实现正文实现/清空/改变正负/除以100inputText已经实现了,接下来实现operator的功能,operator方法在之前的文章中已经定义好了,......
  • 【UniApp】-uni-app-动态计算字体大小(苹果计算器)
    前言本文主要介绍uni-app中动态计算字体大小的方法原因呢就是在上一篇文章当中我发现输入的内容已经超过了展示区域于是我就想到了动态计算字体大小的方法,这样就可以保证输入的内容不会超过展示区域正文首先要改造的是style="font-size:180rpx;"这里不能直接写......