Obliczanie wyznacznikow macierzy C/C++
Program oblicza wyznacznik macierzy 2x2 oraz 3x3. Temat moze malo odkrywczy ale moze komus sie przyda to, jak i co tu zastosowalem :) Oto program :
#include
#include
#include
void wczytaj2x2 ( float macierz[][2]);
void wczytaj3x3 ( float macierz[][3]);
float oblicz2x2 ( float macierz[][2]);
float oblicz3x3 ( float macierz[][3] );
main ()
{
// deklaracja zmiennych
float m2x2[2][2], m3x3[3][3];
char a=0,b;
// petla glowna programu
do
{ //petla menu
do
{
clrscr();
b=0;
puts("Program wylicza wyznacznik podanej macierzy:\n\n");
puts("\tF1 - obliczanie wyznacznika macierzy 2x2");
puts("\tF2 - obliczanie wyznacznika macierzy 3x3\n");
puts("\tESC - wyjscie z programu\n");
// pobieranie znaku
a=getch();
if (a==0) b=getch();
}
while ( (a!=0 && b!=59) && (a!=0 && b!=60) && (a!=27) );
// wykonywanie wyboru F1 lub F2:
if (a!=27) switch (b)
{
case 59 : wczytaj2x2(m2x2);
printf ("\nWyznacznik podanej macierzy 2x2 = %f\n", oblicz2x2(m2x2));
printf ("Nacisnij dowolny klawisz ... ");
getch();
break;
case 60 : wczytaj3x3(m3x3);
printf ("\nWyznacznik podanej macierzy 3x3 = %f\n", oblicz3x3(m3x3));
printf ("Nacisnij dowolny klawisz ... ");
getch();
break;
}
} // koniec petli glownej programu
while ( a!=27 );
return 0;
}
void wczytaj2x2 ( float macierz[][2])
{
char x,y;
clrscr();
puts ("Prosze uzupelnic macierz zaindeksowana w nastepujacy sposob:\n");
puts ("\t\t\t11 12 ");
puts ("\t\t\t21 22 \n");
for (x=0; x<2 ; x++)
for (y=0; y<2; y++)
{
printf ("Podaj liczbe o indeksie %d%d : ",x+1,y+1);
scanf ("%f",&macierz[x][y]);
}
}
void wczytaj3x3 ( float macierz[][3])
{
clrscr();
char x,y;
puts ("Prosze uzupelnic macierz zaindeksowana w nastepujacy sposob:\n");
puts ("\t\t\t11 12 13");
puts ("\t\t\t21 22 23");
puts ("\t\t\t31 32 33\n");
for (x=0; x<3 ; x++)
for (y=0; y<3; y++)
{
printf ("Podaj liczbe o indeksie %d%d : ",x+1,y+1);
scanf ("%f",&macierz[x][y]);
}
}
float oblicz2x2 ( float macierz[][2])
{
return ( macierz[0][0]*macierz[1][1] - macierz[0][1]*macierz[1][0] );
}
float oblicz3x3 ( float macierz[][3] )
{
return ( macierz[0][0]*macierz[1][1]*macierz[2][2]
+macierz[1][0]*macierz[2][1]*macierz[0][2]
+macierz[2][0]*macierz[0][1]*macierz[1][2]
-macierz[2][0]*macierz[1][1]*macierz[0][2]
-macierz[0][0]*macierz[2][1]*macierz[1][2]
-macierz[1][0]*macierz[0][1]*macierz[2][2] );
}