【问题标题】:Making a binary calculator app (swift)制作二进制计算器应用程序(swift)
【发布时间】:2017-11-19 22:24:22
【问题描述】:

对于 Uni 的一个项目,我决定制作一个二进制计算器应用程序来学习更多关于编码的知识。

我已经完成了一个普通的计算器应用程序(但它只有两个数字:1 ; 0)但我不知道如何让计算器正常工作(1010 + 1101 = 10111 不是2111)。感谢所有帮助。

var numberEkraanil:Double = 0;
var eelmineNumber:Double = 0;
var tehesmatemaatikat = false
var operation = 0;

@IBOutlet weak var label: UILabel!

@IBAction func Numbers(_ sender: UIButton) {
    if tehesmatemaatikat == true
    {
        label.text = String(sender.tag-1)
        numberEkraanil = Double(label.text!)!
        tehesmatemaatikat = false
    }
    else
    {
        label.text = label.text! + String(sender.tag-1)
        numberEkraanil = Double(label.text!)!
    }
}

@IBAction func nupud(_ sender: UIButton) {
    if label.text != "" && sender.tag != 6 && sender.tag != 8
    {
        eelmineNumber = Double(label.text!)!
        if sender.tag == 3 //Liitmine
        {
            label.text = "+";
        }
        else if sender.tag == 4 //Lahutamine
        {
            label.text = "-";
        }
        else if sender.tag == 5 // Korrutamine
        {
            label.text = "x";
        }
        else if sender.tag == 7 // Jagamine
        {
            label.text = "÷";
        }

        operation = sender.tag
        tehesmatemaatikat = true;
    }
    else if sender.tag == 8
    {
        if operation == 3
        {
          label.text = String(eelmineNumber + numberEkraanil)
        }
        else if operation == 4
        {
            label.text = String(eelmineNumber - numberEkraanil)
        }
        else if operation == 5
        {
            label.text = String(eelmineNumber * numberEkraanil)
        }
        else if operation == 7
        {
            label.text = String(eelmineNumber / numberEkraanil)
        }
    }
    else if sender.tag == 6
    {
        label.text = ""
        eelmineNumber = 0;
        numberEkraanil = 0;
        operation = 0;
    }

【问题讨论】:

  • 您需要将文本输入转换为二进制数字,并将结果的二进制转换为字符串。我建议阅读基本转换。 (提示:查看二进制位移运算符<<>> 以及按位与运算符&&。)
  • 任何时候你有一个很长的 if <condition> then <statement> else if <condition> then <statement> else if <condition> 构造,你应该考虑使用不同的方法,比如 switch 语句。
  • 另外,标签并不是处理不同按钮的好方法。我建议将插座连接到每个按钮,然后比较发件人以查看它匹配的插座:switch sender { case plusButton: <your_code> ; case minusButton: <your_code> }

标签: ios swift binary calculator


【解决方案1】:

您可以将二进制数转换为十进制数。例如,将“1010”转换为 int“10”,然后反转该过程以再次获取二进制文件。在您的示例“1010 + 1101 = 10111”中,您可以将“1010”转换为“10”和“13”,用这些小数进行普通计算并将结果“23”转换为“23”。

当然还有其他方法。该网站可以帮助您进行二进制计算。这是一个数学网站:http://www.calculator.net/binary-calculator.html

【讨论】:

    【解决方案2】:

    您需要编写一个以 10 为基数到以 2 为基数和一个以 2 为基数到 10 的转换器。这是两者的伪代码:

    要将二进制字符串转换为整数,请执行以下操作:

    • 将结果值设为零。
    • 当您的输入字符串不为空时:
      • 将结果值左移 1 位
      • 从输入字符串中删除最左边的字符,如果是 1,则将结果值加 1。

    要将 int 转换为二进制字符串,请反向执行相同操作:

    • 将您的 int 复制到临时变量 scratch
    • 将输出字符串设置为空字符串。
    • 虽然划痕不是 0:
      • 如果从头开始 && 1 为 0,则在输出字符串的左侧附加一个“0”
      • 如果从头开始 && 1 为 1,则在输出字符串的左侧附加一个“1”
      • 将暂存器向右移动 1 位

    一旦你有了这些构建块,让你的计算器工作就很简单了。当用户输入二进制字符串时,将其转换为整数工作值。对整数值进行计算,然后将整数结果转换为二进制字符串进行显示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-22
      • 1970-01-01
      • 2016-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多