在我的程序中,給定隨機數的隨機操作,使用隨機數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。
你如何評價表達?如果您正在解析它並處理分析樹,則可以在每個分割節點中檢查除數是否爲零。 –
我會咬人。你爲什麼需要這個? –
用我的代碼更新了帖子以生成表達式。 – africantraplord