Arama butonu
Bu konudaki kullanıcılar: 1 misafir
10
Cevap
1332
Tıklama
0
Öne Çıkarma
C++ matrisin Kofaktörü ve fonksiyon
B
9 yıl
Çavuş
Konu Sahibi

Arkadaşlar bilgisayar müh. bölümünde değilim giriş seviyesinde programlama öğreniyoruz. ve bir ödevim var %70ini tamamladım ama bir kısmı kaldı bu kısımda yardımınızı istiyorum.
matrislerle ilgili 3 isteğim olacak.

Matrislerde kofaktör(işaretli minör) hesabı, ek matris ve bir de fonksiyon olarak yapılacak bir kısım var orayı da açıklayayım.girilen bir matrisin en büyük elemanını bularak kullanıcıya verecek. burada en büyük değeri hesaplama işlemi fonksiyon kullanılarak yapılması isteniyor.

yardımcı olursanız çok sevinirim. iyi günler.



B
9 yıl
Çavuş
Konu Sahibi

yardım lütfen fonksiyon olanı hallettim. ama diğer ikisi hala sorun.


Bu mesaja 1 cevap geldi.
H
9 yıl
Teğmen

 
void MatrixInversion(float **A, int order, float **Y)
{
// get the determinant of a
double det = 1.0/CalcDeterminant(A,order);

// memory allocation
float *temp = new float[(order-1)*(order-1)];
float **minor = new float*[order-1];
for(int i=0;i<order-1;i++)
minor[i] = temp+(i*(order-1));

for(int j=0;j<order;j++)
{
for(int i=0;i<order;i++)
{
// get the co-factor (matrix) of A(j,i)
GetMinor(A,minor,j,i,order);
Y[i][j] = det*CalcDeterminant(minor,order-1);
if( (i+j)%2 == 1)
Y[i][j] = -Y[i][j];
}
}

// release memory
//delete [] minor[0];
delete [] temp;
delete [] minor;
}

// calculate the cofactor of element (row,col)
int GetMinor(float **src, float **dest, int row, int col, int order)
{
// indicate which col and row is being copied to dest
int colCount=0,rowCount=0;

for(int i = 0; i < order; i++ )
{
if( i != row )
{
colCount = 0;
for(int j = 0; j < order; j++ )
{
// when j is not the element
if( j != col )
{
dest[rowCount][colCount] = src[i][j];
colCount++;
}
}
rowCount++;
}
}

return 1;
}

// Calculate the determinant recursively.
double CalcDeterminant( float **mat, int order)
{
// order must be >= 0
// stop the recursion when matrix is a single element
if( order == 1 )
return mat[0][0];

// the determinant value
float det = 0;

// allocate the cofactor matrix
float **minor;
minor = new float*[order-1];
for(int i=0;i<order-1;i++)
minor[i] = new float[order-1];

for(int i = 0; i < order; i++ )
{
// get minor of element (0,i)
GetMinor( mat, minor, 0, i , order);
// the recusion is here!

det += (i%2==1?-1.0:1.0) * mat[0][i] * CalcDeterminant(minor,order-1);
//det += pow( -1.0, i ) * mat[0][i] * CalcDeterminant( minor,order-1 );
}

// release memory
for(int i=0;i<order-1;i++)
delete [] minor[i];
delete [] minor;

return det;
}





< Bu mesaj bu kişi tarafından değiştirildi hannibal1903 -- 19 Mayıs 2015; 17:22:17 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @biologyst
B
9 yıl
Çavuş
Konu Sahibi

kütüphaneler neler eklenmeyecek mi ve bu şekilde derleyince calcDeterminant ve getMinor tanımlı değil diyor


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @hannibal1903
H
9 yıl
Teğmen

#include <iostream>
using namespace std;

bunu ekledinmi başına fonksiyonun.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @biologyst
B
9 yıl
Çavuş
Konu Sahibi

denedim olmadı


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @hannibal1903
H
9 yıl
Teğmen

Olmaswı lazım kardeş ne hatası alıyosun


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @biologyst
B
9 yıl
Çavuş
Konu Sahibi

derleyince calcDeterminant ve getMinor tanımlı değil diyor


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @hannibal1903
W
9 yıl
Binbaşı

main'in bunların üstünde kalmış olma ihtimali var mı?


Bu mesaja 1 cevap geldi.
B
9 yıl
Çavuş
Konu Sahibi

burada sadece fonksiyonlar var bunun devamı da olması lazım sanırım


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @welrocken
H
9 yıl
Teğmen

Kardeş bu fonksiyonları kullanarak istediğin işi yapabilirsin her türlü .Main olmasına gerek yok sen sadece mainde iki boyutlu bir matris oluşturup kullanacan başkada bir espirisi yok




Bu mesajda bahsedilenler: @biologyst
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.