Witam chciałem, się dowiedzieć czy ten program jest dobrze napisany podwzględem czystości kodu, przejrzystości itd.
(Wiem ze deklaracje i definicje funkcji najlepiej było by rozbić na 2 różne pliki, pomińmy ten fakt w ocenie)
Nie wiedziałem kompletnie jak wmiare krótko ale dobrze nazwać parametry funkcji wczytywanie. Moze ktoś ma lepszy pomysł
#include <iostream>
#include <vector>
using namespace std;
void wczytywanie(unsigned int* liczbaWierszyA, unsigned int* liczbaKolumnA_liczbaWierszyB, unsigned int* liczbaKolumnB);
void uzupelnij(vector< vector<unsigned int> >& macierz, string nazwa_macierzy);
void wyswietl(vector< vector<unsigned int> >& macierz, string nazwa_macierzy);
void mnozenie(vector< vector<unsigned int> >& macierz1, vector< vector<unsigned int> >& macierz2, vector< vector<unsigned int> >& macierz3);
int main()
{
unsigned int liczba_wierszy_A{}, liczba_kolumn_A_i_liczba_wierszyB{}, liczba_kolumn_B{};
wczytywanie(&liczba_wierszy_A, &liczba_kolumn_A_i_liczba_wierszyB, &liczba_kolumn_B);
vector< vector<unsigned int> > macierzA
{
liczba_wierszy_A,
vector<unsigned int>(liczba_kolumn_A_i_liczba_wierszyB)
};
uzupelnij(macierzA, "A");
wyswietl(macierzA, "A");
vector< vector<unsigned int> > macierzB
{
liczba_kolumn_A_i_liczba_wierszyB,
vector<unsigned int>(liczba_kolumn_B)
};
uzupelnij(macierzB, "B");
wyswietl(macierzB, "B");
vector< vector<unsigned int> > macierzC
{
liczba_wierszy_A,
vector<unsigned int>(liczba_kolumn_B)
};
mnozenie(macierzA, macierzB, macierzC);
wyswietl(macierzC, "wynikowej C");
system("PAUSE");
}
void wczytywanie(unsigned int* liczbaWierszyA, unsigned int* liczbaKolumnA_liczbaWierszyB, unsigned int* liczbaKolumnB)
{
cout << "Okresl wielkosc macierzy!" << endl;
do
{
cout << "Podaj ile wierszy ma miec macierz A: ";
cin >> *liczbaWierszyA;
} while (*liczbaWierszyA == 0);
do
{
cout << "Podaj liczbe kolumn macierzy A, wierszy macierzy B: ";
cin >> *liczbaKolumnA_liczbaWierszyB;
} while (*liczbaKolumnA_liczbaWierszyB == 0);
do
{
cout << "Podaj liczbe kolumn macierzy B: ";
cin >> *liczbaKolumnB;
} while (*liczbaKolumnB == 0);
cout << endl;
}
void uzupelnij(vector< vector<unsigned int> >& macierz, string nazwa_macierzy)
{
cout << "Uzupelnij macierz " + nazwa_macierzy + " wartosciami!" << endl;
for (int i = 0; i < macierz.size(); i++)
{
for (int j = 0; j < macierz[i].size(); j++)
{
cout << "Do elementu o indeksie [" << i << "][" << j << "] wpisz: ";
cin >> macierz[i][j];
}
}
cout << endl;
}
void wyswietl(vector< vector<unsigned int> >& macierz, string nazwa_macierzy)
{
cout << "Wyswietlenie macierzy " + nazwa_macierzy + "!" << endl;
for (int i = 0; i < macierz.size(); i++)
{
for (int j = 0; j < macierz[i].size(); j++)
{
cout << macierz[i][j] << "\t";
}
cout << endl;
}
cout << endl;
}
void mnozenie(vector< vector<unsigned int> >& macierz1, vector< vector<unsigned int> >& macierz2, vector< vector<unsigned int> >& macierz3)
{
for (int i = 0; i < macierz1.size(); i++)
{
for (int j = 0; j < macierz2[i].size(); j++)
{
for (int k = 0; k < macierz2.size(); k++)
{
macierz3[i][j] += macierz1[i][k] * macierz2[k][j];
}
}
}
cout << endl;
}