检查除以零

时间:2017-07-27 03:45:24

标签: c++ algorithm

在我的程序中,使用随机数ex给出随机数的随机操作。 2 + 5/2 - 5 + 2 *(9 - 5)/ 2 - 我需要检查在计算数字时是否会有零除错误。我怎么做这个,而且自己没有收到错误?

代码:

for (int i = 0; i < randNumOfOperations; i++) {
    int randDecision = rand() % 5 + 1;
    int randDecision2 = rand() % 4 + 1; // inside () operations
    int randDecision3 = rand() % 4 + 1; // outside () operations
    int randNum = rand() % 15 + 1;
    int parenRandNum = rand() % 20 + 1;
    int parenRandNum2 = rand() % 20 + 1;
    std::string tempstr = std::to_string(randNum);
    std::string tempstr2 = std::to_string(parenRandNum);
    std::string tempstr3 = std::to_string(parenRandNum2);
switch (randDecision) {
        case 1: 
            nStr.append(tempstr);
            nStr.append(" + ");
            break;
        case 2:
            nStr.append(tempstr);
            nStr.append(" - ");
            break;
        case 3:
            nStr.append(tempstr);
            nStr.append(" * ");
            break;
        case 4:
            nStr.append(tempstr);
            nStr.append(" / ");
            break;
        default:
            break;
    }

    if (randDecision == 5) { //( ) operations
        nStr.append(" (");
        switch (randDecision2) {
        case 1:
            nStr.append(tempstr2);
            nStr.append(" + ");
            nStr.append(tempstr3);
            break;
        case 2:
            nStr.append(tempstr2);
            nStr.append(" - ");
            nStr.append(tempstr3);
            break;
        case 3:
            nStr.append(tempstr2);
            nStr.append(" * ");
            nStr.append(tempstr3);
            break;
        case 4:
            nStr.append(tempstr2);
            nStr.append(" / ");
            nStr.append(tempstr3);
            break;
        default:
            break;
        }

        nStr.append(") ");

        switch (randDecision3) {
        case 1:
            nStr.append(" + ");
            break;
        case 2:
            nStr.append(" - ");
            break;
        case 3:
            nStr.append(" * ");
            break;
        case 4:
            nStr.append(" / ");
            break;
        default:
            break;
        }

    }
}

代码将随机表达式放入字符串nStr。

2 个答案:

答案 0 :(得分:-1)

我将研究如何构建表达式树并使用它来评估表达式。它可以很容易地检查除以零,这将是有效的。您也可以在将来将它用于许多不同的应用程序。 http://www.geeksforgeeks.org/expression-tree/

答案 1 :(得分:-2)

检查一旦你拥有它所有解析if语句为0将返回false

if(devisor)
result=result/devisor;

我在github上完成了类似的项目 for a recursive approach
using a list and stack