Program iloczyn macierzy kwadratowych

0

Witam, mam ogromną prośbę. Jestem amatorem w programowaniu w c++ i nie za bardzo wiem jak się zabrać za program. Jeżeli ktoś byłby tak miły i pomógł mi zacząć pisać ten program, bo nawet nie wiem jak. A program to "iloczyn macierzy kwadratowych" Program ma być zrobiony na tablicach i trzeba zablkować możliwość wprowadzenia innych elementów niż liczby

0

50zł. Zainteresowany? Zapraszam na priv.
Bo za darmo to zacząć musisz sam...

0

Ok, oto początek kodu:

int main() {
  // tu robisz obliczenia.
  return 0;
}
0

Podaj jakieś parametry tego programu, czy znasz rozmiar macierzy, czy ma być podany przez użytkownika itp.

0
#include <iostream>

void WprowadzMacierz(double ** tab, int n);
int WprowadzRozmiar();
double ** IloczynMacierzy(double ** tab1, double ** tab2, int n);
void WyswietlMacierz(double ** tab, int n);

int main()
{
    using namespace std;

    cout << "Podaj rozmiar tablicy: ";
    int rozm = WprowadzRozmiar();

    double ** tablica1 = new double * [rozm];
    double ** tablica2 = new double * [rozm];

    for (int i = 0; i < rozm; i++)
    {
        tablica1[i] = new double [rozm];
        tablica2[i] = new double [rozm];
    }

    WprowadzMacierz(tablica1, rozm);
    WprowadzMacierz(tablica2, rozm);

    double ** wynik = IloczynMacierzy(tablica1, tablica2, rozm);
    WyswietlMacierz(wynik, rozm);

    for (int i = 0; i < rozm; i++)
    {
        delete [] tablica1[i];
        delete [] tablica2[i];
        delete [] wynik[i];
    }

    delete [] tablica1;
    delete [] tablica2;
    delete [] wynik;

    return 0;
}

void WprowadzMacierz(double ** tab, int n)
{
    using namespace std;
    double wartosc;

    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
        {
            cout << "Podaj element [" << i << "][" << j << "]: ";
            cin >> wartosc;

            if (cin)
                tab[i][j] = wartosc;

            while (!cin)
            {
                cin.clear();
                while (cin.get() != '\n')
                    continue;
                j--;
            }
        }
}

int WprowadzRozmiar()
{
    using namespace std;
    int rozmiar;

    while (!(cin >> rozmiar))
    {
        cin.clear();
        while (cin.get() != '\n');
    }

    return rozmiar;
}

double ** IloczynMacierzy(double ** tab1, double ** tab2, int n)
{
    double ** wynik = new double * [n];

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

    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            wynik[i][j] = 0;

    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            for (int k = 0; k < n; k++)
                wynik[i][j] += tab1[i][k] * tab2[k][j];

    return wynik;
}

void WyswietlMacierz(double ** tab, int n)
{
    using namespace std;

    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
            cout << tab[i][j] << "\t";
        cout << endl;
    }
}
 

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