c++ mnożenie macierzy - błędne wyniki

0

Hej,

Próbuję napisać program obliczający regresję liniową. Niestety zatrzymałam się na mnożeniu macierzy zdefiniowanych przez użytkownika na początku programu. Wszystko byłoby okej gdyby nie błędny wynik macierzy po pomnożeniu. nie mam pojęcia o co może chodzić. Byłabym bardzo wdzięczna za jakąkolwiek wskazówkę. Poniżej kod programu. :)

#include <iostream>
using namespace std;

int main() {

int wierszeA, kolumnyA;
int wierszeB, kolumnyB;


	
cout<< "Podaj liczbe wierszy macierzy A: ";
cin >> wierszeA;

cout << "Podaj liczbe kolumn macierzy A: ";
cin >> kolumnyA;

wierszeB = kolumnyA;
kolumnyB = 1;

cout<< "Rozmiar A: ["<<wierszeA<<","<<kolumnyA<<"]"<<endl;
cout << "rozmiar B: ["<<wierszeB<<","<<kolumnyB<<"]"<<endl;


//budowanie
int i,j,k,l;

    int macierzA[wierszeA][kolumnyA];
    int macierzB[wierszeB][kolumnyB];

    for(i=0; i<wierszeA; i++){
        for(j=0; j<kolumnyA; j++){
        cout << "Podaj element ["<<i<<","<< j<<"] macierzy A"<< endl;
        cin >> macierzA[i][j];
        }
    }

        for(i=0; i<wierszeB; i++){
        for(j=0; j<kolumnyB; j++){
        cout << "Podaj element ["<<i+1<<","<< j+1<<"] macierzy B"<< endl;
        cin >> macierzB[i][j];
        }
    }
//wyswietlanie
    cout << "Macierz A: " << endl;
    for(i=0; i<wierszeA; i++){
       for(j=0; j<kolumnyA; j++){
        cout << macierzA[i][j] <<" ";
       }
        cout << endl;
    }

    cout << endl;

     cout << "Macierz B: " << endl;
    for(i=0; i<wierszeB; i++){
       for(j=0; j<kolumnyB; j++){
        cout << macierzB[i][j] <<" ";
       }
        cout << endl;
    }

    cout << endl;

//transponowanie
int macierzAT[10][10];
int wierszeAT, kolumnyAT;


 wierszeAT = kolumnyA;
 kolumnyAT = wierszeA;
 for(i=0; i<wierszeA; i++){ //wymiar macierzy transponowanej
        for(j=0; j<kolumnyA; j++){
               macierzAT[j][i] = macierzA[i][j];
        }
        cout<< endl;
    }
    cout << "To jest transponowana macierz A: " << endl;
    for(i=0; i<kolumnyA; i++){
       for(j=0; j<wierszeA; j++){
        cout << macierzAT[i][j] <<" ";
       }
        cout << endl;
    }

// mnożymy macierz A przez B i wynik umieszczamy w ATxA

int macierzATxA[100][100];

		//macierzATxA[i][j]=0;
		for(i=0; i<wierszeAT; i++){
		  for(j=0; j<kolumnyAT; j++){
		    for(k=0; k<wierszeA; k++){
		    	macierzATxA[i][j]=0;
		    	macierzATxA[i][j] = macierzATxA[i][j] + macierzAT[i][k] * macierzA[k][i];
		}
	}
	cout << endl;
}

 	cout << "Macierz ATxA wynosi: " << endl;
			for(i=0; i<kolumnyA; i++){
				for(j=0; j<kolumnyA; j++){
				cout << macierzATxA[i][j] << " ";
			}
			cout << endl;
}
}
 
0
  1. Zapoznaj się z pojęciem formatowania kodu
  2. Zapoznaj się z tym - http://4programmers.net/Forum/1101404
  3. Zapoznaj się z pojęciem DRY
  4. Zapoznaj się z pojęciem funkcji i podziel to na funkcje
  5. Mści ci się mało sensowne nazywanie zmiennych więc nie widzisz co się dzieje.

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