Macierz odwrotna

0

Mam napisać program liczący macierz odwrotną do zadanej. Udało mi się to zrobić gdy macierz jest już podana, lecz mam problem żeby to zrobić tak by macierz była wczytywana z klawiatury i dopiero przetwarzana na macierz odwrotną. Proszę również o komentarz do programu poniżej czy wygląda on w miarę dobrze, czy może da się coś uprościć?

#include <stdio.h>
#include <stdlib.h>

int tab[3][3]={0, 2, 3, 4, 5, 6, 7, 8, 9};
int tab2[3][3];
int wyznacznik;
int i, j;

int main()
{

    wyznacznik=tab[0][0]*tab[1][1]*tab[2][2]+tab[1][0]*tab[2][1]*tab[0][2]+tab[0][1]*tab[1][2]*tab[2][0]
    -(tab[2][0]*tab[1][1]*tab[0][2]+tab[1][0]*tab[0][1]*tab[2][2]+tab[2][1]*tab[1][2]*tab[0][0]);

    tab2[0][0]=(tab[1][1]*tab[2][2]-(tab[1][2]*tab[2][1]));
    tab2[0][1]=-(tab[1][0]*tab[2][2]-(tab[1][2]*tab[2][0]));
    tab2[0][2]=(tab[1][0]*tab[2][1]-(tab[1][1]*tab[2][0]));
    tab2[1][0]=-(tab[0][1]*tab[2][2]-(tab[0][2]*tab[2][1]));
    tab2[1][1]=(tab[0][0]*tab[2][2]-(tab[0][2]*tab[2][0]));
    tab2[1][2]=-(tab[0][0]*tab[2][1]-(tab[0][1]*tab[2][0]));
    tab2[2][0]=(tab[0][1]*tab[1][2]-(tab[0][2]*tab[1][1]));
    tab2[2][1]=-(tab[0][0]*tab[1][2]-(tab[0][2]*tab[1][0]));
    tab2[2][2]=(tab[0][0]*tab[1][1]-(tab[0][1]*tab[1][0]));

    for(i=0; i<3; i++){
            for(j=0; j<3; j++){
        printf("%d ",tab2[j][i]/wyznacznik);
            }
            printf("\n");
    }

    return 0;
}
 
0

Wygląda fatalnie...

1

Zrób to dla macierzy 50x50

0

co zrobic zeby nie wygladalo tak fatalnie? Nie umiem zrobic wiec prosze o pomoc

0

Na początek spróbuj to zrobić przy użyciu pętli.

0

no ale tu nie ma zadnych zaleznosci np w liczeniu wyznacznika

pomoze ktos?

1

Zamiast obliczać wyznacznik i korzystać z macierzy dopełnień lepiej moim zdaniem zaimplementować eliminację Gaussa (można użyć na przykład wersji z pełnym wyborem elementu głównego, żeby zmniejszyć ryzyko załamania algorytmu).

Wtedy tworzymy nową macierz [A | I], wykonujemy na niej eliminację otrzymując macierz postaci [I | B], gdzie B to macierz odwrotna do A, natomiast I to macierz jednostkowa odpowiedniego rozmiaru.

Więcej informacji: wyznaczanie macierzy odwrotnej.

0

rozwiaze mi to ktos? Nie moge nic znalezc

1

Chłopie nie bierz się za programowanie jak matmy nie umiesz. Albo ten post to jakieś trollowanie.

0
Świetny Orzeł napisał(a):

rozwiaze mi to ktos? Nie moge nic znalezc

Ale szukałeś na facebooku czy na naszej klasie?!

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