Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 用多个运算计算多个数_Arduino_Calculator_Microcontroller - Fatal编程技术网

Arduino 用多个运算计算多个数

Arduino 用多个运算计算多个数,arduino,calculator,microcontroller,Arduino,Calculator,Microcontroller,所以我正在创建一个计算器来计算数字。我有这个代码(我不包括非常基本的代码) 长num1,num2,答案; 布尔值mySwitch=false; 布尔do_减法_标志=false;//如果为真,我们将应用减法 布尔乘法=假; 布尔除法=假; void循环() { char keypressed=myKeypad.getKey(); 如果(按下键!=无键) { 串行打印(按键); 如果(按键>47&&keypressed

所以我正在创建一个计算器来计算数字。我有这个代码(我不包括非常基本的代码)

长num1,num2,答案;
布尔值mySwitch=false;
布尔do_减法_标志=false;//如果为真,我们将应用减法
布尔乘法=假;
布尔除法=假;
void循环()
{
char keypressed=myKeypad.getKey();
如果(按下键!=无键)
{
串行打印(按键);
如果(按键>47&&keypressed<58)//介于“0”和“9”之间
{
如果(!mySwitch)
{
num1=(num1*10)+(按-48键);
}
其他的
{
num2=(num2*10)+(按-48键);
}
}
如果(按键=='='=')
{
if(do\u减法\u标志)//我们要减去这些数字
{
答案=num1-num2;
}else if(乘法){
答案=num1*num2;
}else if(除法){
答案=num1/num2;
}
否则//我们要添加数字
{
答案=num1+num2;
}
序列号println(应答);
num1=0;
num2=0;
mySwitch=false;
do_减法_标志=假;
乘=假;
除法=假;
}
else if(按键=='+')
{
mySwitch=true;
}
else if(按键=='*'){
mySwitch=true;
乘法=真;
}else if(按键=='/')){
mySwitch=true;
除法=真;
}
否则如果(按键=='-')
{
mySwitch=true;
do_减法_标志=真;
}否则,如果(按键=='C'){
对于(int i=0;i<80;i++)
{
Serial.write(8);//打印80次退格(BS)
}        
}
}
}

我在这里很困惑,因为我想用多个操作数(例如,2+1+3或2+1-2)计算多个数,但是当我添加另一个变量'num3'时,我应该怎么处理它呢?如果我将其放入do_减法标志中,如果用户输入2-1+3怎么办?是否可以用此代码计算3个数字?我在这里感到困惑,但请告诉我,如果您也对我要做的事情感到困惑,请创建一个数组来保存您输入的数字和运算符,然后在输入='='时循环它们。让num1始终保留结果,num2保留下一个数组值

long num1, num2, answer;
boolean mySwitch = false;
boolean do_subtraction_flag = false;  // when true we will apply subtraction
boolean multiply = false;
boolean divide = false;

void loop()
{
char keypressed = myKeypad.getKey();

if(keypressed != NO_KEY)
{
    Serial.print(keypressed);



    if(keypressed > 47 && keypressed < 58)  // is between '0' and '9'
    {
        if(!mySwitch)
        {
            num1 = (num1 * 10) + (keypressed - 48);
        }
        else
        {
            num2 = (num2 * 10) + (keypressed - 48);
        }



    }

    if(keypressed == '=')
    {
        if(do_subtraction_flag)  // we want to subtract the numbers
        {
            answer = num1 - num2;
        }else if(multiply){

    answer = num1 * num2;
    }else if(divide){
    answer = num1 / num2;
    }
        else  // we want to add the numbers
        {
            answer = num1 + num2;
        }

        Serial.println(answer);
        num1 = 0;
        num2 = 0;
        mySwitch = false;
        do_subtraction_flag = false;
    multiply = false;
    divide = false;
    }
    else if(keypressed == '+')
    {
        mySwitch = true;
    }
else if(keypressed == '*'){
    mySwitch = true;
    multiply = true;
}else if(keypressed == '/'){
    mySwitch = true;
    divide = true;
}
    else if(keypressed == '-')
    {
        mySwitch = true;
        do_subtraction_flag = true;
    }else if (keypressed == 'C'){
      for (int i=0; i < 80; i++) 
      {
        Serial.write(8);  // print 80 times backspace (BS)
    }        
    }
}
}