#include <iostream>
#include <conio.h>
#include <ctime>
#include <stdlib.h>
using namespace std;
const int n=3;
int **tab;
int menu();
void wypelnij_i_pokaz(int **tab,int min, int max );
int wyznacznik(int **tab,int n);
bool symetryczna(int **tab, int n);
int suma_komorek(int **tab, int n);
////////////////////////////////////////////////////////////////////////////////////
int main()
{
switch(menu())
{
case 1:{
system("CLS");
cout<<"Macierz 3x3"<<endl;
wypelnij_i_pokaz(tab,1,9);
wyznacznik(tab,n);
break;
}
case 2:{
wypelnij_i_pokaz(tab,1,9);
if(symetryczna(tab,n))
cout<<"Tablica jest symetryczna"<<endl;
else
cout<<"tablica jest niesymetryczna"<<endl;
break;
}
case 3:{
wypelnij_i_pokaz(tab,1,9);
suma_komorek(tab,n);
break;
}
}
system("pause");
}
/////////////////////////////////////////////////////////////////////////////////////
int menu(){
int opcja;
do{
cout<<" ============ Menu Lab 5 ============"<<endl;
cout<<"1.Wyliczanie wyznacznika macierzy"<<endl;
cout<<"2.Sprawdz czy macierz jest symetryczna "<<endl;
cout<<"3.Suma wartosci komorek"<<endl;
cout<<"======================================="<<endl<<endl;
cout<<"wybierz warunek od 1 do 3"<<endl;
cin>>opcja;
}
while(opcja<1 || opcja>3);
return opcja;
}
////////////////////////////////////////////////////////////////////////////////////
void wypelnij_i_pokaz(int **tab,int min,int max)
{
tab = new int*[n]; //<-------- PIERWSZY!
srand(time(0));
for(int i=0;i<n;i++)
{
tab[i] = new int[n]; //<--------------- ODWOŁANIE DO DRUGIEGO WYMIARU !
for(int j=0;j<n;j++)
{
tab[i][j]=rand()%(max-min+1)+min;
cout<<tab[i][j]<<" ";
}
cout<<"\n";
}
}
////////////////////////////////////////////////////////////////
int wyznacznik(int **tab, int n)
{
int Wyznacznik;
tab = new int*[n];
for(int i=0;i<n;i++)
{
tab[i] = new int[n];
for(int j=0;j<n;j++)
{
int Wyznacznik_1=(tab[0][0]*tab[1][1]*tab[2][2])+(tab[0][1]*tab[1][2]*tab[2][0])+(tab[0][2]*tab[1][0]*tab[2][1]);
int Wyznacznik_2=(tab[2][0]*tab[1][1]*tab[0][2])+(tab[2][1]*tab[1][2]*tab[0][0])+(tab[2][2]*tab[1][0]*tab[0][1]);
Wyznacznik=Wyznacznik_1-Wyznacznik_2;
}
}
cout <<"\nWyznacznik macierzy wynosi "<<Wyznacznik<<".";
return Wyznacznik;
}
/////////////////////////////////////////////////////////////////////////////////////
bool symetryczna(int **tab, int n)
{
tab = new int*[n];
for(int i=0; i<n; i++)
{
tab[i] = new int[n];
for(int j=0; j<n; j++)
{
if(tab[i][j] != tab[j][i])
{
return false;
}
}
}
return true;
}
//////////////////////////////////////////////////////////////////////////////
int suma_komorek(int **tab, int n)
{
int suma = 0;
tab = new int*[n];
for(int i=0; i<n; i++)
{
tab[i] = new int[n];
for(int j=0; j<n; j++)
{
if((i+j)%2==0)
{
suma =suma + tab[i][j];
}
}
}
cout<<"suma wynosi "<<suma<<endl;
return suma;
}
Program nie chce liczyć wyznacznika, próbowałem już paru sposobów, ale zwracało wartość "0", ktoś mógłby mnie nakierować na rozwiązanie?