Mam problem z napisaniem programu mnozącego macierze, który ma działać na podwojnych wskaznikach. Program na wejsciu dostaje dostaje rozmiary macierzy -> macierz1 mxn macierz2 nxp i jest wypelniana losowo liczbami Udalo mi sie napisac cos takiego jak ponizej ale przy kompilacji wywala mi blad "Unhandled exception at 0x00e31861 in cwicze.exe: 0xC0000005: Access violation reading location 0xfdfdfdfd."
// cwicze.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <time.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int m,n,p;
srand(time(NULL));
cout << "Podaj n: ";
cin >> n;
cout << "Podaj m?: ";
cin >> m;
cout << "Podaj p?: ";
cin >> p;
int** macierz1=new int* [m];
int** macierz2=new int* [n];
int** iloczyn=new int* [n];
//zapelniane macierzy1 losowymi liczbami
for(int i=0;i<m;i++)
{
macierz1[i] = new int [n];
for (int j=0;j<n;j++)
macierz1[i][j]=rand()%14+1;
}
//zapelniane macierzy2 losowymi liczbami
for(int i=0;i<n;i++)
{
macierz2[i] = new int [p];
for (int j=0;j<p;j++)
macierz2[i][j]=rand()%14+1;
}
//tworzenie macieczy z wynikiem iloczynu
for(int i=0;i<n;i++)
{
iloczyn[i] = new int [n];
}
//mnozenie macierzy
int i,j,k;
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
for(k = 0; k < n; k++)
iloczyn[i][j] += macierz1[k][i] * macierz2[j][k];
//wypisanie iloczynu
cout << "iloczyn:";
for(int f=0;f<n;f++)
{
cout << endl;
for (int v=0;v<m;v++)
{
cout << iloczyn[f][v] << " ";
}
delete[] macierz1, macierz2, iloczyn;
}
return 0;
}
UPDATE
znalazlem blad. dobry kod wyglada tak:
int n,m,p;
cout << "Podaj n: ";
cin >> n;
cout << "Podaj m?: ";
cin >> m;
cout << "Podaj p?: ";
cin >> p;
int** macierz1=new int* [m];
int** macierz2=new int* [n];
int** iloczyn=new int* [n];
//zapelniane macierzy1 losowymi liczbami
for(int i=0;i<m;i++)
{
macierz1[i] = new int [n];
for (int j=0;j<n;j++)
macierz1[i][j]=rand()%14+1;
}
//zapelniane macierzy2 losowymi liczbami
for(int i=0;i<n;i++)
{
macierz2[i] = new int [p];
for (int j=0;j<p;j++)
macierz2[i][j]=rand()%14+1;
}
//tworzenie macieczy z wynikiem iloczynu
for(int i=0;i<n;i++)
{
iloczyn[i] = new int [n];
}
//mnozenie macierzy
int i,j,k,y;
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
for(k = 0; k < m; k++)
for(y = 0; y < p; y++)
iloczyn[j][i] += macierz1[k][i] * macierz2[j][y];
cout << "test";
//wypisanie iloczynu
cout << "iloczyn:";
for(int f=0;f<n;f++)
{
cout << endl;
for (int v=0;v<n;v++)
{
cout << iloczyn[f][v] << " ";
}
}
cin.get();
cin.get();
return 0;
}