Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Mnożenie macierzy

Ostatnio zmodyfikowano 2015-11-11 17:05
Autor Wiadomość
malyryc
Temat założony przez niniejszego użytkownika
[C++] Mnożenie macierzy
» 2015-11-11 17:05:18
Witam, napisałem program mnożący macierze, lecz niestety program wywala błąd, jeśli to możliwe proszę o wskazanie błędu w moim rozumowaniu.



C/C++
#include <iostream>
#include <stdio.h>
#include <time.h>
#include <cstdlib>

int x, y, a, b;

using namespace std;
int main()
{
    srand( time( NULL ) );
    //podanie dlugosci i szerokosci macierzy nr1
    cout << "podaj liczbe wierszy i kolumn macierzy nr 1\n";
    cin >> x >> y;
    cout << endl;
   
   
   
    //utworzenie dynamicznej tablicy nr1
    int ** tablica = new int *[ x ];
    for( int i = 0; i < x; i++ )
         tablica[ i ] = new int[ y ];
   
   
    //wypelnienie tablicy losowymi wartosciami
    for( int i = 0; i < x; i++ )
    {
        for( int j = 0; j < y; j++ )
        {
            tablica[ i ][ j ] = rand() % 10;
           
            cout << tablica[ i ][ j ] << " ";
        } cout << endl;
    }
   
   
    //podanie dlugosci i szerokosci macierzy nr2
    cout << "\n\npodaj liczbe wierszy i kolumn macierzy nr 2\n";
    cin >> a >> b;
    cout << endl;
   
   
    //utworzenie dynamicznej tablicy nr2
    int ** tablica2 = new int *[ a ];
    for( int i = 0; i < a; i++ )
         tablica2[ i ] = new int[ b ];
   
    //wypelnienie tablicy losowymi wartosciami
    for( int i = 0; i < a; i++ )
    {
        for( int j = 0; j < b; j++ )
        {
            tablica2[ i ][ j ] = rand() % 10;
           
            cout << tablica2[ i ][ j ] << " ";
        } cout << endl;
    }
   
    cout << endl << endl;
   
   
    //utworzenie dynamicznej tablicy mnozenia
    int ** wynik = new int *[ x ];
    for( int i = 0; i < x; i++ )
         wynik[ i ] = new int[ b ];
   
   
   
    for( int i = 0; i < x; i++ )
    {
        for( int j = 0; j < b; j++ )
        {
            wynik[ i ][ j ] = 0;
           
            for( int k = 0; k < b; k++ )
            {
                wynik[ i ][ j ] += tablica[ i ][ k ] * tablica2[ k ][ j ];
               
                cout << wynik[ i ][ j ] << " ";
            }
        } cout << endl;
    }
   
   
   
   
   
   
    //usuniecie z pamieci tablicy nr1
    for( int i = 0; i < x; i++ )
         delete[] tablica[ i ];
   
    delete[] tablica;
   
    //usuniecie z pamieci tablicy nr2
    for( int i = 0; i < a; i++ )
         delete[] tablica2[ i ];
   
    delete[] tablica2;
   
    //usuniecie z pamieci tablicy mnozenia
    for( int i = 0; i < x; i++ )
         delete[] wynik[ i ];
   
    delete[] wynik;
   
   
   
   
   
    return 0;
}
P-139938
« 1 »
  Strona 1 z 1