這裏是有問題的代碼,我已經從我的程序拉到塊:如何解決與div相關的運行時錯誤爲零?
#include <vector>
using namespace std;
vector<double> permittingConstructionCosts(56);
static const int PERMITTING_PERIODS = 0;
static const int CONSTRUCTION_PERIODS = 11;
static const double CONSTRUCTION_COSTS = 2169506;
static const double PERMITTING_COSTS = 142085;
static const int PERMITTING_CONSTRUCTION_PERIODS = PERMITTING_PERIODS + CONSTRUCTION_PERIODS;
void calcExpenses // Calculates permitting and construction expenses
(
vector<double>& expense,
double value1,
double value2
)
{
int i;
for (i=0; i<=PERMITTING_PERIODS + 1; i++)
{
expense[i] = value1;
}
for (i=PERMITTING_PERIODS + 2; i<expense.size(); i++)
{
if (i < PERMITTING_CONSTRUCTION_PERIODS + 2)
{
expense[i] = value2;
}
}
}
int main()
{
if (PERMITTING_PERIODS != 0)
{
calcExpenses(permittingConstructionCosts, -PERMITTING_COSTS/PERMITTING_PERIODS, -CONSTRUCTION_COSTS/CONSTRUCTION_PERIODS);
}
else
{
calcExpenses(permittingConstructionCosts, 0, -CONSTRUCTION_COSTS/CONSTRUCTION_PERIODS);
}
return 0;
}
根據ideone(http://ideone.com/LpzUny)的代碼有一個返回「時運行時錯誤:0內存:3456信號:11 」。
我試圖尋找解決方案上的SO,發現以下幾個環節:
How can I avoid a warning about division-by-zero in this template code?
How to eliminate "divide by 0" error in template code
不過,我不知道如何,因爲我是新來使用模板C++,我不確定我需要在這種情況下使用它們,所以我不知道如何適應這些解決方案以適應我的特殊問題,如果它甚至是可能的。
我很確定「-PERMITTING_COSTS/PERMITTING_PERIODS」導致了這個問題,但我認爲僅僅檢查除數就能解決問題。此函數似乎適用於除0以外的其他任何值,但我需要考慮PERMITTING_PERIODS = 0的情況。
我非常感謝任何幫助,我可以得到。提前致謝!
編輯:我實際上是在我的程序中初始化矢量,但我忘了放入,因爲大小是在程序中的其他地方決定的。一旦我通過放入一個數字來修復該部分,但是當我將PERMITTING_PERIODS設置爲0時,我的程序仍然存在運行時錯誤,因此我想我必須在別處尋找錯誤。謝謝您的幫助!
您正試圖爲空向量編制索引。 – user2357112
順便說一句,如果您使用Google [[signal 11'](https://www.google.com/search?q=signal+11)),您會發現所有結果都是關於訪問不是你的,而不是零除。 – user2357112
調試器在您逐步完成代碼時會告訴您什麼?當你遇到一個你不認識的錯誤時,你應該做的第一件事就是Google(或Bing)*確切的錯誤信息*。 –