|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
07.11.2017, 12:19 | #1 |
Регистрация: 07.11.2017
Сообщений: 4
|
Прошу помочь!
Здравствуйте!
Хотел написать программу, которая перемножала бы матрицы произвольных размеров, не получилось Вот, собственно, сам код: #include <iostream> #include <iomanip> using namespace std; int mult(int**matrix1,int x,int y,int**matrix2,int x1,int y1,int**matrix3,int x2, int y2) { for (int i = 0; i < x; i++) { for (int j = 0; j < y1; j++) { int k = x-1; matrix3[i][j] = (matrix1[i][1])*(matrix2[1][j]); while (k > 0) { matrix3[i][j] += (matrix1[i][j + 1])*(matrix2[i + 1][j]); k -= 1; } } } for (int i = 0; i < x; i++) { cout << endl; for (int j = 0; j < y1; j++) cout << setw(3) << matrix3[i][j] << " "; } return 0; } int main() { setlocale(LC_ALL, "rus"); int x, y,x1,y1,x2,y2; cout << "Введите количество строк и столбцов первой матрицы через пробел" << endl; cin >> x >> y; int **matrix1 = new int*[x]; for (int i = 0; i < x; i++) matrix1[i] = new int[y]; for (int i = 0; i < x; i++) { for (int j = 0; j < y; j++) { cout << "Введите значение элемента " << i + 1 << "." << j + 1 << " первой матрицы" << endl; cin >> matrix1[i][j]; } } cout << "Введите количество строк и столбцов второй матрицы через пробел" << endl; cin >> x1 >> y1; int **matrix2 = new int*[x1]; for (int i = 0; i < x1; i++) matrix2[i] = new int[y1]; for (int i = 0; i < x1; i++) { for (int j = 0; j < y1; j++) { cout << "Введите значение элемента " << i+1 <<"."<< j+1 <<" второй матрицы"<< endl; cin >> matrix2[i][j]; } } x2 = x; y2 = y1; int **matrix3 = new int*[x2]; for (int i = 0; i < x2; i++) matrix3[i] = new int[y2]; if (x = y1) { mult(matrix1,x,y,matrix2,x1,y1,matr ix3,x2,y2); } else { cout << "Данные матрицы перемножить нельзя" << endl; } for (int i = 0; i < x; i++) delete matrix1[i]; delete[] matrix1; for (int i = 0; i < x1; i++) delete matrix2[i]; delete[] matrix2; for (int i = 0; i < x2; i++) delete matrix3[i]; delete[] matrix3; system("pause"); return 0; } Как только дело доходит до исполнения функции выводится ошибка (я использую Visual studio 2013): Необработанное исключение по адресу 0x00B35DD7 в Умножение матриц.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFDFDFDFD. Я подозреваю что как-то не очень правильно описал параметры функции. Что я сделал не правильно? |
07.11.2017, 12:32 | #2 |
Регистрация: 07.11.2017
Сообщений: 4
|
Тема не соответствует правилам форума, можно закрывать
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
прошу помочь | Мирик | Windows | 11 | 25.10.2015 15:53 |
прошу помочь | qewertyns | Помощь студентам | 0 | 21.10.2012 19:12 |
Алгоритмы. Не прошу решить. Прошу помочь! | pascaluser | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 12.10.2012 08:45 |
Прошу помочь! | DeusGPZ | Общие вопросы C/C++ | 4 | 17.10.2011 13:01 |