mnozenie macierzy na podwojnych wskaznikach

0

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;
}
0

Nie analizowałem kodu, ale patrząc na błąd jaki masz to dokonujesz de referencji wskaźnika, którego wartość nie została ustawiona.
Kompilator, w wersji debug ustawia domyślnie zmienne na wartość 0xfdfdfdfd, by łatwiej było zauważyć, że wartość zmiennej nie została ustawiona przez program.

1 użytkowników online, w tym zalogowanych: 0, gości: 1