potrzebuje pomocy w programie, to znaczy chodzi mi o bład który tam jest i nie wiem jak go zmodyfikowac cos jest nie tak z wyznacznikami, program sie kompiluje wszystko działa tylko wyznaczniki wychodza nie takie. czyli cos musi byc z działaniem nie tak ale nie wiem co. Prosze o pomoc. Jakby ktos znalazł wiecej błedów była bym wdzieczna o ich poprawienie. bardzo dziekuje.
#include <cstdio>
//----------------------------------------------------------------------
void msuma(int **m1, int **m2, int x, int y);
void mroznica(int **m1, int **m2, int x, int y);
void miloczyn(int **m1, int **m2, int x, int y, int x2, int y2);
int dett(int **tab, int rozmiar);
void clrscr(void);
//----------------------------------------------------------------------
int main(int argc, char **argv)
{
int w;
int x, y, x2, y2;
int **m1, **m2;
bool t = false;
while(t == false)
{
printf("1 - Dodawanie\n2 - Odejmowanie\n3 - Mnozenie\n4 - Wyznacznik\n5 - Wyjscie\n\nWpisz cyfre i nacisnij enter: ");
scanf("%d", &w);
clrscr();
switch(w)
{
case 1:
printf("Podaj liczbe wierszy i kolumn (Przy dodawaniu obie macierze musza miec takie same wymiary)\nLiczba wierszy: ");
scanf("%d", &x);
printf("Liczba kolumn: ");
scanf("%d", &y);
m1 = new int *[x];
for(int i = 0; i < x; ++i)
m1 = new int [y];
m2 = new int *[x];
for(int i = 0; i < x; ++i)
m2 = new int [y];
for(int i = 0; i < x; i++)
for(int j = 0; j < y; j++)
{
printf("Podaj liczbe (%d, %d) pierwszej macierzy: ", i, j);
scanf("%d", &m1[j]);
}
for(int i = 0; i < x; i++)
for(int j = 0; j < y; j++)
{
printf("Podaj liczbe (%d, %d) drugiej macierzy: ", i, j);
scanf("%d", &m2[j]);
}
clrscr();
msuma(m1, m2, x, y);
for(int i = 0; i < x; ++i )
{
delete [] m1;
delete [] m2;
}
delete [] m1;
delete [] m2;
printf("\n");
break;
case 2:
printf("Podaj liczbe wierszy i kolumn (Przy odejmownaiu obie macierze musza miec takie same wymiary)\nLiczba wierszy: ");
scanf("%d", &x);
printf("Liczba kolumn: ");
scanf("%d", &y);
m1 = new int *[x];
for(int i = 0; i < x; ++i)
m1 = new int [y];
m2 = new int *[x];
for(int i = 0; i < x; ++i)
m2 = new int [y];
for(int i = 0; i < x; i++)
for(int j = 0; j < y; j++)
{
printf("Podaj liczbe (%d, %d) pierwszej macierzy: ", i, j);
scanf("%d", &m1[j]);
}
for(int i = 0; i < x; i++)
for(int j = 0; j < y; j++)
{
printf("Podaj liczbe (%d, %d) drugiej macierzy: ", i, j);
scanf("%d", &m2[j]);
}
clrscr();
mroznica(m1, m2, x, y);
for(int i = 0; i < x; ++i )
{
delete [] m1[i];
delete [] m2[i];
}
delete [] m1;
delete [] m2;
printf("\n");
break;
case 3:
printf("Podaj wymiary obu macierzy (Liczba kolum drugiej macierzy musi byc rowna liczbie wierszy pierwszej macierzy)\n");
printf("Podaj liczbe wierszy pierwszej macierzy: ");
scanf("%d", &x);
printf("Podaj liczbe kolumn pierwszej macierzy: ");
scanf("%d", &y);
printf("\nPodaj liczbe wierszy drugiej macierzy: ");
scanf("%d", &x2);
printf("Podaj liczbe kolumn drugiej macierzy: ");
scanf("%d", &y2);
printf("\n");
if(x != y2)
break;
m1 = new int *[x];
for(int i = 0; i < x; ++i)
m1[i] = new int [y];
m2 = new int *[x2];
for(int i = 0; i < x2; ++i)
m2[i] = new int [y2];
for(int i = 0; i < x; i++)
for(int j = 0; j < y; j++)
{
printf("Podaj liczbe (%d, %d) pierwszej macierzy: ", i, j);
scanf("%d", &m1[i][j]);
}
printf("\n");
for(int i = 0; i < x2; i++)
for(int j = 0; j < y2; j++)
{
printf("Podaj liczbe (%d, %d) drugiej macierzy: ", i, j);
scanf("%d", &m2[i][j]);
}
clrscr();
miloczyn(m1, m2, x, y, x2, y2);
for(int i = 0; i < x; ++i )
{
delete [] m1[i];
}
for(int i = 0; i < x2; ++i )
{
delete [] m2[i];
}
delete [] m1;
delete [] m2;
printf("\n");
break;
case 4:
printf("Podaj dlugosc boku macierzy: ");
scanf("%d", &x);
m1 = new int *[x];
for(int i = 0; i < x; ++i)
m1[i] = new int [x];
for(int i = 0; i < x; i++)
for(int j = 0; j < x; j++)
{
printf("Podaj liczbe (%d, %d) macierzy: ", i, j);
scanf("%d", &m1[i][j]);
}
printf("Wyznacznik wynosi: %d\n", dett(m1, x));
for(int i = 0; i < x; ++i )
delete [] m1[i];
break;
case 5:
return 0;
break;
default:
printf("Operacja niemozliwa\n");
printf("\n");
break;
}
}
return 0;
}
//----------------------------------------------------------------------
void msuma(int **m1, int **m2, int x, int y)
{
printf("Suma macierzy m1 i m2 zostala wyswietlona ponizej\n");
for(int i=0; i<x; i++)
{
printf("[");
for(int j = 0; j < y; j++)
{
printf("%d, ",m1[i][j] + m2[i][j]);
}
printf("]\n");
}
}
//----------------------------------------------------------------------
void mroznica(int **m1, int **m2, int x, int y)
{
printf("Roznica macierzy m1 i m2 zostala wyswietlona ponizej\n");
for(int i = 0; i < x; i++)
{
printf("[");
for(int j = 0; j < y; j++)
{
printf("%d, ", m1[i][j] - m2[i][j]);
}
printf("]\n");
}
}
//----------------------------------------------------------------------
void miloczyn(int **m1, int **m2, int x, int y, int x2, int y2)
{
int **m = new int *[x];
for(int i = 0; i < x; ++i)
m[i] = new int [y2];
for(int i = 0; i < x; i++)
for(int j = 0; j < y2; j++)
m[i][j]=0;
for(int i = 0; i < x; i++)
for(int j = 0; j < y2; j++)
for(int k = 0; k < y; k++)
m[i][j] +=m1[i][k]*m2[k][j];
printf("Iloczyn macierzy m1 i m2 zostala wyswietlona ponizej\n");
for(int i = 0; i < x; i++)
{
printf("[");
for(int j = 0; j < y2; j++)
{
printf("%d, ", m[i][j]);
}
printf("]\n");
}
}
//----------------------------------------------------------------------
TU COŚ JEST CHYBA NIE TAK

int dett(int **tab, int rozmiar)
{
float det = 1.0;
for (int k = 0; k < rozmiar - 1; k++)
{
for (int i = k + 1; i < rozmiar; i++)
for (int j = rozmiar - 1; j >= k; j--)
tab[i][j] = tab[i][j] - tab[i][k] * tab[k][j] / tab[k][k];
}
for(int i = 0; i < rozmiar; i++)
det = det * tab[i][i];
return det;
}
//----------------------------------------------------------------------
void clrscr(void)
{
printf("\033[2J");
printf("\033[0;0f");
}
//----------------------------------------------------------------------