程序打开时出错

时间:2016-03-18 12:50:17

标签: c++

当我尝试启动我的C ++程序时,它会因错误“5.exe已停止工作”而停止。该程序应该计算池所需的瓷砖数量,如果一侧的瓷砖数量是非圆形数量,则向其添加一行瓷砖。附:抱歉我的英语不好。

#include <iostream>
#include <math.h>
#include <cstdlib>

using namespace std;

int main()
{
    int x,y,z;
    int a,b;
    cout << "Insert dimensions of pool in metres: " << endl;
    cin >> x >> y >> z;
    cout << "Insert dimensions of tile in centimeters: " << endl;
    cin >> a >> b;

    a=a/100;
    b=b/100;

    int brx = 0, brzx = 0, bry = 0, brzy = 0, bxpod = 0, bypod = 0;

    if (x%a == 0) {
        brx = x / a;
    }
    else {
        brx = x / a + 1;
    }

    if (z%b == 0) {
        brzx = z / b;
    }
    else {
        brzx = z / b + 1;
    }

    if (y%a == 0) {
        bry = y / a;
    }
    else {
        bry = y / a + 1;
    }

    if (z%b == 0) {
        brzy = z / b;
    }
    else {
        brzy = z / b + 1;
    } 

    if (x%a == 0) {
        bxpod = x / a;
    }
    else {
        bxpod = x / a + 1;
    }

    if (y%b == 0) {
        bypod = y / b;
    }
    else {
        bypod = y / b + 1;
    }

    int s = (brx*brzx + bry*brzy) * 2 + bxpod*bypod;

    cout << "You need " << s << "tiles." << endl;

    system("pause");
    return 0;
}

1 个答案:

答案 0 :(得分:1)

使用调试器,您可以轻松地在以下内容中找到除以0的除法:

if (x%a == 0) {
    brx = x / a;
}

你正在对“a”进行整数除法:

 a = a / 100;

因此,如果a低于100,则当转换为int时,a将为0. 10/100 = 0.1 = 0。 你应该使用double而不是int