Wątek zablokowany 2016-02-26 02:52 przez furious programming.

Wyznacznik macierzy - nie dziala

0

Witam
Otóż mam problem z programem, swego czasu liczyl wyznacznik jednak "przestal dzialac", nie moge znalezc rozwiazania mojego problemu bo za kazdym razem wyznacznik zwraca rowny 0.

//Program liczacy wyznacznik macierzy 4x4
#include <stdio.h>

void wprowadzenie_wartosci(int n, double tab[n][n])
{
     int i,j;
     printf("Wprowadz macierz 4x4\n");
     for (i=0; i<n; i++)
     {
         for (j=0; j<n; j++)
         {
             printf("{%d,%d}\t",i+1,j+1);
             scanf("%lf",&tab[i][j]);
         }
     }
}

void minor(int x, int n, double minor1[n][n], double minor2[n-1][n-1])
{
    int i,j;
    for(j=0; j<n-1; j++)
    {
        for(i=0; i<x; i++)
        {
            minor2[j][i] = minor1[j+1][i];
        }
        for(i=x+1; i<n; i++)
        {
        minor2[j][i-1] = minor1[j+1][i];
        }
     }
}

int potega(int x)
{
    if ((x%2)==1) return -1;
    else return 1;
}

double wyznacznik(int n, double minor1[n][n])
{
     int x;
     double det=0,minor2[n-1][n-1];
     for (x=0; x<n; x++)
     {
        minor(x, n, minor1, minor2);
        det = det + potega(x) * minor1[0][x] * wyznacznik(n-1,minor2);
     }
     return det;
}

int main()
{
    double tab[4][4];
    wprowadzenie_wartosci(4,tab);
    printf("\nWartosc wyznacznika wynosi: %.2lf\n",wyznacznik(4,tab));
    return 0;
}

1

Co mówi debugger?
Poza tym nie żadne void wprowadzenie_wartosci(int n, double tab[n][n]), tylko zwyczajnie void wprowadzenie_wartosci(int n, double** tab)

0

Problem w tym, ze nic sie nie wyswietla

0

Nie odpowiedziałeś na moje pytanie.

0

Naucz się jak się korzysta z debbugera. Postaw pointer w funkcji wyznacznik() i podejrzyj zmienne. Możesz to zrobić również po Januszowemu czyli podejrzeć zmienne poprzez jakieś printf lub inne rzeczy żeby zobaczyć co tam się dzieje.

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