[C++]Mnozenie macierzy

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
mazix2
Sędziwy Jeż
Sędziwy Jeż
Posty: 75
Rejestracja: 11 gru 2009, 10:01
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86

[C++]Mnozenie macierzy

Post autor: mazix2 »

Problem wydawaloby sie, banalny, a jednak ... Mam z tym klopot - napisalem sobie mnozenie macierzy, jednak dla podanych na sztywno macierzy (dla przykladu) wyswietla mi zle wyniki. (poprawne wyniki, jakie powienin program wypisac zamiescilem w komentarzu po wyswietlaniu).

Mecze sie z tym strasznie, moze ktos pomoze znalezc blad?

Kod: Zaznacz cały

#include <iostream>
using namespace std;

int** mulMatrixes(int r1, int c1, int r2, int c2,int **a, int **b){
      
      int **c = new int*[r1];
      for(int i=0; i<r1; i++)
          c[i] = new int[c2];

      for(int i=0;i<r1;i++)
      {
       for(int j=0;j<c2;j++)
       {
        c[i][j]=0;
        for(int k=0;k<r1;k++)
            c[i][j] += a[i][k] * b[k][j];
       }
      }

      return c;
}
     
int main(int argc, char **argv){
    
    int r1,r2,c1,c2;
    int **a, **b,**c;
    
    c1 = r2 = 3;
    r1 = 1;
    c2 = 3;
    
    a = new int*[r1];
    for(int i=0; i<r1; i++)
        a[i] = new int[c1];
        
    b = new int*[r2];
    for(int i=0; i<r2; i++)
        b[i] = new int[c2];
        
    a[0][0] = 4;
    a[0][1] = 5;
    a[0][2] = 1;
    
    b[0][0] = 1;
    b[0][1] = 0;
    b[0][2] = 0;
    b[1][0] = 0;
    b[1][1] = 1;
    b[1][2] = 0;
    b[2][0] = 1;
    b[2][1] = 1;
    b[2][2] = 1;
    
    c = mulMatrixes(r1,c1,r2,c2,a,b);
    
    cout << c[0][0] << "\n";         //5
    cout << c[0][1] << "\n";         //6
    cout << c[0][2] << "\n";         //1
    
    for(int i=0; i<c1; i++)
        delete[] a[i];
    delete[] a;
    
    for(int i=0; i<c2; i++)
        delete[] b[i];
    delete[] b;
    
    for(int i=0; i<c2; i++)
        delete[] c[i];
    delete[] c;
    
    cin.get();
    return 0;
}
Awatar użytkownika
dawwin
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 202
Rejestracja: 18 kwie 2009, 09:16
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: [C++]Mnozenie macierzy

Post autor: dawwin »

Kod: Zaznacz cały

int** mulMatrixes(int r1, int c1, int r2, int c2,int **a, int **b){

      int **c = new int*[r1];
      for(int i=0; i<r1; i++)
          c[i] = new int[c2];

      for(int i=0;i<r1;i++)
      {
       for(int j=0;j<c2;j++)
       {
        c[i][j]=0;
        for(int k=0;k<c1;k++)
            c[i][j] += a[i][k] * b[k][j];
       }
      }

      return c;
}
Trzecia pętla powinna się wykonywać dopóki k jest mniejsze od c1 a nie r1
Moje programy - http://dawwin.users.sourceforge.net/
Nie pomagam na PW
mazix2
Sędziwy Jeż
Sędziwy Jeż
Posty: 75
Rejestracja: 11 gru 2009, 10:01
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86

Odp: [C++]Mnozenie macierzy

Post autor: mazix2 »

Pięknie dziękuję, juz wszytsko ok :)
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 16 gości