 
Задание: По заданной матрице составить вектор, элементы которого равны произведениям элементов
соответствующего столбца. Решение на С++: //#include "stdafx.h"#include #include #include #include #include #include using namespace std;int main(){srand(time(0));setlocale(LC_ALL, "Russian");int i, j, n,m, sum = 0;cout « "Ввод количества строк x= ";cin » n;cout « "Ввод количества столбцов y= ";cin » m;int **matrix = new int*[n]; for (int i = 0; i < n; i++) matrix[i] = new int[m]; int [id888077|*vector] = new int[m]; for (int i = 0; i < m; i++) vector[i] = 1;for (int i = 0; ifor (int j = 0; jmatrix[i][j] = rand()%10; for (int i = 0; i < m; i++) for (int j = 0; j < n; j++) vector[j] *= matrix[i][j]; for (int i = 0; i < m; i++) {cout « "|" « vector[i];cout « endl;}return 0;}Почему то не работает, но понять не могу что не так 0
        0
         0
        0
    Ответы на вопрос
 
        #include <iostream>
#include <vector>
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
vector<vector<int>> matrix(n, vector<int>(m));
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin >> matrix[i][j];
}
}
vector<int> ans;
for (int i = 0; i < m; i++)
{
int pr = 1;
for (int j = 0; j < n; j++)
{
pr *= matrix[j][i];
}
ans.push_back(pr);
}
for (auto x : ans)
{
cout << x << " ";
}
return 0;
}
Значения элементов матрицы вводятся с клавиатуры. В векторе ans лежит ответ.
 0
                    0
                     0
                    0
                 
            После тщательного анализа кода, я заметил несколько ошибок, которые препятствуют его правильной работе. Вот что нужно исправить:
- Неверно заданы размеры матрицы и вектора. Матрица должна быть размером - [n][m], а вектор размером- [m]. В коде у вас это написано неправильно, и это приводит к проблемам.
- В цикле обхода элементов матрицы, вам следует использовать циклы, которые идут от 0 до - < nи- < m, а не наоборот.
- Для вывода символа - |между элементами вектора, следует использовать двойные кавычки вместо одинарных.
- После ввода - nи- m, вы создаете две переменные- iи- j, используя оператор- intбез указания имени переменной. Это приводит к ошибке компиляции.
- Необходимо освободить выделенную память после использования. Иначе это может привести к утечкам памяти. 
Исправленный код выглядит следующим образом:
cpp#include <iostream>
#include <ctime>
using namespace std;
int main() {
    srand(time(0));
    setlocale(LC_ALL, "Russian");
    int n, m;
    cout << "Ввод количества строк x= ";
    cin >> n;
    cout << "Ввод количества столбцов y= ";
    cin >> m;
    int **matrix = new int*[n];
    for (int i = 0; i < n; i++)
        matrix[i] = new int[m];
    int *vector = new int[m];
    for (int i = 0; i < m; i++)
        vector[i] = 1;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            matrix[i][j] = rand() % 10;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            vector[j] *= matrix[i][j];
    for (int i = 0; i < m; i++)
        cout << "|" << vector[i];
    cout << endl;
    // Освобождение памяти
    for (int i = 0; i < n; i++)
        delete[] matrix[i];
    delete[] matrix;
    delete[] vector;
    return 0;
}
Теперь код должен работать правильно и выводить вектор, элементы которого равны произведениям элементов соответствующего столбца.
 0
                    0
                     0
                    0
                Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
- 
			Математика 
- 
			Литература 
- 
			Алгебра 
- 
			Русский язык 
- 
			Геометрия 
- 
			Английский язык 
- 
			Химия 
- 
			Физика 
- 
			Биология 
- 
			Другие предметы 
- 
			История 
- 
			Обществознание 
- 
			Окружающий мир 
- 
			География 
- 
			Українська мова 
- 
			Информатика 
- 
			Українська література 
- 
			Қазақ тiлi 
- 
			Экономика 
- 
			Музыка 
- 
			Право 
- 
			Беларуская мова 
- 
			Французский язык 
- 
			Немецкий язык 
- 
			МХК 
- 
			ОБЖ 
- 
			Психология 
- 
			Физкультура и спорт 
- 
			Астрономия 
- 
			Кыргыз тили 
- 
			Оʻzbek tili 
 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			 
			