C++ mnożenie tablicy 2d przez tablice jednowymiarową

0

Chcę pomnożyć macierz dwuwymiarową przez macierz jednowymiarową. Wiec konwersuje macierz 1D na macierz 2D z jednym wierszem. Niestety później podczas mnożenia dostaję błąd i nie potrafię określić dlaczego.

 	double *tab_P;
	double n = 3;
	tab_P[0] = 150;
	tab_P1[1] = 0;
	tab_P1[2] = 400;


	double **tab_H;
	tab_H = new double [n];
	for(int i=0; i<n; i++)
		tab_H[i] = new double[n];

	tab_H[0][0] = 0.2;
	tab_H[0][1] = 0.15;
	tab_H[0][2] = 0.1;


	tab_H[1][0] = 0.15;
	tab_H[1][1] = 0.15;
	tab_H[1][2] = 0.1;

	tab_H[2][0] = 0.1;
	tab_H[2][1] = 0.1;
	tab_H[2][2] = 0.1;

	double **tmp_P;
	tmp_P = new double *[n];
	for(int i=0; i<n; i++)
		tmp_P[i] = new double [1];

	for(int i=0; i<n; i++){
		for(int j=0; j<1; j++) {
				tmp_P[i][j] = tab_P[i];
		}
	}

	double **result = new double * [n];
	for(int i=0; i<n; i++)
		result[i] = new double [1];


	int i,j,k;
	int s = 0;
	for(i=0; i<n; i++) {
		for(j=0; j<1; j++) {
			s = 0;
			for(k =0; k<n; k++)
				s += tab_H[i][k] * tmp_P[k][j];
			result[i][j];
		}
	}
0

Może i dostajesz jakiś błąd podczas mnożenia ale za pewne nie z tym kodem. Ten kod zwyczajnie się nie skompiluje.

0

Faktycznie,było parę błędów dlatego ze wpsiałem to z głowy na szybko:

 int n = 3;
	double *tab_P = new double [n];
	
	tab_P[0] = 150;
	tab_P[1] = 0;
	tab_P[2] = 400;


	double **tab_H;
	tab_H = new double* [n];
	for(int i=0; i<n; i++)
		tab_H[i] = new double[n];

	tab_H[0][0] = 0.2;
	tab_H[0][1] = 0.15;
	tab_H[0][2] = 0.1;


	tab_H[1][0] = 0.15;
	tab_H[1][1] = 0.15;
	tab_H[1][2] = 0.1;

	tab_H[2][0] = 0.1;
	tab_H[2][1] = 0.1;
	tab_H[2][2] = 0.1;

	double **tmp_P;
	tmp_P = new double *[n];
	for(int i=0; i<n; i++)
		tmp_P[i] = new double [1];

	for(int i=0; i<n; i++){
		for(int j=0; j<1; j++) {
			tmp_P[i][j] = tab_P[i];
		}
	}

	double **result = new double * [n];
	for(int i=0; i<n; i++)
		result[i] = new double [1];


	int i,j,k;
	int s = 0;
	for(i=0; i<n; i++) {
		for(j=0; j<1; j++) {
			s = 0;
			for(k =0; k<n; k++)
				s += tab_H[i][k] * tmp_P[k][j];
			result[i][j];
		}
	}

Poprawiona wersja

0

Ok juz mam,

result[i][j] = s

zamiast

result[i][j]

sorry, głupi błąd

0

Na szybko - nie masz żadnego przypisania do tablicy result.

Masz:

 result[i][j];

A może powinno być:

result[i][j]=s;

?

0

aww... już niepotrzebnie się wpisałem, sorry...

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