[C++] Wyznacznik macierzy

rkolacz92
Użytkownik
Użytkownik
Posty: 62
Rejestracja: 6 paź 2011, o 20:59
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 21 razy

[C++] Wyznacznik macierzy

Post autor: rkolacz92 »

Witam. Proszę o pomoc w tym zadaniu:

W funkcji main() zadeklarować zmienną tablicową dwuwymiarową typu double (w skrócie:
double[][]) i przypisać do niej tablicę 2x2 (macierz). Napisać funkcję o nazwie det, która
przyjmie jako parametr tablicę

Kod: Zaznacz cały

double[2][2]
i zwróci jej wyznacznik. W funkcji main()
obliczyć wyznacznik (korzystając z napisanej funkcji) i wyświetlić wartość.
Ostatnio zmieniony 19 kwie 2012, o 23:25 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
wawek91
Użytkownik
Użytkownik
Posty: 795
Rejestracja: 2 cze 2010, o 08:56
Płeć: Mężczyzna
Lokalizacja: Tarnów
Podziękował: 14 razy
Pomógł: 66 razy

[C++] Wyznacznik macierzy

Post autor: wawek91 »

Ok z czym masz problem? Wiesz jak wpisać do tablicy dwuwymiarowej jakieś dane? Wyznacznik macierzy 2x2 obliczysz ze wzoru det(A) = tab[0][0]*tab[1][1]-tab[0][1]*tab[1][0]. Jak pisać funkcję w C++ wiesz? Deklaracja funkcji to będzie

Kod: Zaznacz cały

double obliczWyznacznik(double** macierz);
chyba tak już chwilę nie pisałem w C++ więc moze mi się mieszać
Ostatnio zmieniony 19 kwie 2012, o 23:25 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
rkolacz92
Użytkownik
Użytkownik
Posty: 62
Rejestracja: 6 paź 2011, o 20:59
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 21 razy

[C++] Wyznacznik macierzy

Post autor: rkolacz92 »

ok mam takie coś i nie działa :/

Kod: Zaznacz cały

#include <iostream>

using namespace std;

double wyznacznik(double macierz[2][2]) {
	return macierz[0][0]*macierz[1][1]-macierz[0][1]*macierz[1][0];
}

int main () {
	cout << wyznacznik( {1,2}, {2,1});
        return 0;
}
wawek91
Użytkownik
Użytkownik
Posty: 795
Rejestracja: 2 cze 2010, o 08:56
Płeć: Mężczyzna
Lokalizacja: Tarnów
Podziękował: 14 razy
Pomógł: 66 razy

[C++] Wyznacznik macierzy

Post autor: wawek91 »

Nie działa, tzn? Po pierwsze nie wiem czy można tak przekazywać argumenty funkcji tzn ze musi to być wyłącznie tablica 2x2 chyba nie. Dlatego zadeklaruj funkcje tak jak napisałem. A co do przekazania tablicy jako argumentu to zrób tak:

Kod: Zaznacz cały

 double tab[2][2];
for(int i = 0; i < 2; i++)
  for(int j = 0; j < 2; j++)
    cin >> tab[i][j];

cout << wyznacznik(tab);
Rozumiesz?
//pisane na kolenie na szybko bez kompilatora
rkolacz92
Użytkownik
Użytkownik
Posty: 62
Rejestracja: 6 paź 2011, o 20:59
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 21 razy

[C++] Wyznacznik macierzy

Post autor: rkolacz92 »

Nie rozumiem po co są te gwiazdki i dlaczego to musi być w pętli?
wawek91
Użytkownik
Użytkownik
Posty: 795
Rejestracja: 2 cze 2010, o 08:56
Płeć: Mężczyzna
Lokalizacja: Tarnów
Podziękował: 14 razy
Pomógł: 66 razy

[C++] Wyznacznik macierzy

Post autor: wawek91 »

Bo nie możesz w taki sposób przekazać argumentu jak Ty to robisz. A gwiazdki być może mozesz zastąpić symbolem [], ale co do tego nie jestem pewny. * to wskaźnik a ** to wskaźnik na wskaźnik (w tym przypadku na początek tablicy dwuwymiarowej)
ODPOWIEDZ