Мой код на C ++ возвращает 3 (после создания экземпляра bad_alloc) - PullRequest
0 голосов
/ 07 ноября 2019

Мой код возвращает 3, хотя все кажется правильным. Ранее он возвратил 255, и я немного переставил его, а теперь он возвращает 3. Он также говорит «завершить вызов после выброса экземпляра 'std :: bad_alloc'". Я посмотрел его в Google, но не могу найти никакого решения. Есть идеи, почему это происходит?

#include <iostream>
#include <vector>
using namespace std;
std::vector<int> calculeazaPunctul(double pct[]) {
    double pctfinal[2];
    double xv = pct[0];
    double yv = pct[1];
    double zv = pct[2];
    double res = .02;
    double xk = 1;
    double yk = 1;
    double zk = -2;
    cout << "h" << endl;
    double zp = 0;

    double xp = xv - ((xv - xk) * (zv - zp));
    xp = xp / (((zv - zk != 0) ? (zv - zk) : 0.0001));
    double yp = yv - ((yv - yk) * (zv - zp));
    yp = yp / (((zv - zk != 0) ? (zv - zk) : 0.0001));
    return {(int)((res * 2 * (xp * 50 + 100))), (int)((res * (yp * 50 + 100)))};
}

int main()
{
    double puncte[8][3] = {{1, 0, -1},
                           {1, 0, 1},
                           {-1, 0, 1},
                           {-1, 0, -1},
                           {1, 1, -1},
                           {1, 1, 1},
                           {-1, 1, 1},
                           {-1, 1, -1}};
    std::vector<std::vector<int> > pcteFinal;
    pcteFinal.resize(8);
    for (int i = 0; i < 8; i++) {
        pcteFinal[i] = calculeazaPunctul(puncte[i]);
    }
    std::vector<std::vector<char> > image;
    image.resize(10);
    for (int y = 0; y < 10; y++) {
        std::vector<char> row;
        image[y] = row;
        for (int x = 0; x < 20; x++) {
            image[y].push_back('.');
        }
    }

    for (int i = 0; i < 8; i++) {
        if (pcteFinal[i][0] < 20 && pcteFinal[i][0] >= 0)
        {
            if (pcteFinal[i][1] < 10 && pcteFinal[i][0] >= 0)
            {
                image[pcteFinal[i][0]][pcteFinal[i][1]] = '#';
            }
        }
    }

    for (int y = 0; y < 10; y++) {
        for (int x = 0; x < 20; x++) {
            cout << image[y][x];
        }
        cout << endl;
    }
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...