“CL.exe” завершилась с кодом 2 (С++)

81
31 января 2021, 12:20

#include<iostream>
#include<Windows.h>
#include<time.h>
using namespace std;
void MatrAlloc(int ***a, int n, int m) {
    *a = new int*[n];
    for (int i = 0; i < n; i++) {
        (*a)[i] = new int[m];
    }
}
void MatrGen(int** a, int n, int m) {
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < m; ++j) {
            a[i][j] = rand() % 20 + 1;
        }
    }
}
void MatrOutp(int** a, int n, int m) {
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < m; ++j) {
            cout << a[i][j] << "\t";
        }
        cout << endl;
    }
}
int SumMatrix(int** a, int** b, int n1, int m1, int n2, int m2, int** c) {
    if (n1 != n2 || m1 != m2) return -1;
    for (int i = 0; i < n1; ++i) {
        for (int j = 0; j < m1; ++j) {
            c[i][j] = a[i][j] + b[i][j];
        }
    }
}

int MatrTransp(int** a, int n1, int m1, int** c, int n2, int m2) {
    if (n1 != m2 || m1 != n2) return -1;
    for (int i = 0; i < n1; ++i) {
        for (int j = 0; j < m1; ++j) {
            c[j][i] = a[i][j];
        }
    }
}
int MatrMult(int** a, int n1, int m1) {
    int k;
    cout << "Введите k: ";
    cin >> k;
    for (int i = 0; i < n1; i++)
    {
        for (int j = 0; j < m1; j++)
        {
            a[i][j] = (a[i][j]) * k;;
        }
    }
}
int main() {
    int ** A, ** B, ** res, ** a;
    int a1, a2, b1, b2, k1=0;
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    srand(0);
    cout << "Введите количество строк матрицы A: ";
    cin >> a1;
    cout << "Введите количество столбцов матрицы A: ";
    cin >> a2;
    cout << "Введите количество строк матрицы B: ";
    cin >> b1;
    cout << "Введите количество столбцов матрицы B: ";
    cin >> b2;
    system("cls");
    MatrAlloc(&A, a1, a2);
    MatrAlloc(&B, b1, b2);
    MatrGen(A, a1, a2);
    MatrGen(B, b1, b2);
    cout << "Матрица A:" << endl;
    MatrOutp(A, a1, a2);
    cout << "\nМатрица B:" << endl;
    MatrOutp(B, b1, b2);
    MatrAlloc(&res, a1, a2);
    cout << "\nМатрица C (A+B):" << endl;
    SumMatrix(A, B, a1, a2, b1, b2, res);
    MatrOutp(res, b1, b2);
    MatrAlloc(&a, a2, a1);
    MatrTransp(res, b1, b2, a, b2, b1);
    cout << "\nМатрица C(t):" << endl;
    MatrOutp(a, b2, b1);
    cout << "\nМатрица k*A:" << endl;
    MatrMult(A, a1, a2);
    MatrOutp(A, a1, a2);
    printf("\n");
    system("pause");
    return 0;
}
Answer 1

Изменила int MatrMult(int** a, int n1, int m1) на void MatrMult(int** a, int n1, int m1) и всё заработало. Спасибо @Harry!

Answer 2

у тебя методы, которые должны возвращать int возвращают int не во всех случаях.

например,

int SumMatrix(int** a, int** b, int n1, int m1, int n2, int m2, int** c) {
    if (n1 != n2 || m1 != m2) return -1;
    for (int i = 0; i < n1; ++i) {
        for (int j = 0; j < m1; ++j) {
            c[i][j] = a[i][j] + b[i][j];
        }
    }
    //не вернёт ничего, когда дойдёт до этого места
}

Если тебе нужен от метода какой-то результат, то метод должен вернуть данные того типа, который ты указыаешь, объявляя его. В твоём случае можно было бы не int возвращать, а bool, это уже зависит от того, что ты хочешь.

//в логику самого метода не лез
bool SumMatrix(int** a, int** b, int n1, int m1, int n2, int m2, int** c) {
    if (n1 != n2 || m1 != m2) return false;
    for (int i = 0; i < n1; ++i) {
        for (int j = 0; j < m1; ++j) {
            c[i][j] = a[i][j] + b[i][j];
        }
    }
    return true;
}
READ ALSO
Не применяются стили bootstrap для класса .table-hover

Не применяются стили bootstrap для класса .table-hover

Всем приветЕсть проект на vue с компонентами(

126
Выровнять блоки по высоте

Выровнять блоки по высоте

Предварительно прошу прощения за примитивный вопрос, но я в тупике) Пытаюсь разобраться с Bootstrap 4 и сверстать примитивную карточку товаров,...

140
Как переключить select?

Как переключить select?

Вообщем, пишу я небольшой бот на puppeter который собирает информацию, и мне нужно переключить select на странице програмно, я его переключаю:

140