Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 07.11.2017, 12:19   #1
Sabiks
 
Регистрация: 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. Я подозреваю что как-то не очень правильно описал параметры функции. Что я сделал не правильно?
Sabiks вне форума
Старый 07.11.2017, 12:32   #2
Sabiks
 
Регистрация: 07.11.2017
Сообщений: 4
По умолчанию

Тема не соответствует правилам форума, можно закрывать
Sabiks вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
прошу помочь Мирик 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