PDA

View Full Version : سوال: درترمینان ماترسی مربعی n*n به روش بازگشتی



rezaheidarida
سه شنبه 31 خرداد 1390, 14:24 عصر
دیروز برای امتحان عملی پایان ترم استادمون یه همچین سوالی داده بود!
درترمینان ماتریس مربعی n*n را به روش بازگشتی حساب کنید
درایه های ماتریس از یه فایل متنی خوانده میشه
و از حافظه پویا باید استفاده کنید!
فرمول محاسبه اینطوره:


71431

اطلاعات بیشتر اینجا (http://www.algorithmha.ir/post-%D9%85%D8%AD%D8%A7%D8%B3%D8%A8%D9%87-%D8%AF%D8%AA%D8%B1%D9%85%DB%8C%D9%86%D8%A7%D9%86-%D9%85%D8%A7%D8%AA%D8%B1%DB%8C%D8%B3.aspx)

من اینقدرشو نوشتم
کسی می تونه بقیه شو بگه!

#include <iostream>
#include <conio.h>
#include <stdio.h>
using namespace std;
int kpower ( int n ){
int sum=1;

for (int i=1 ; i<=n ; i++){
sum *= -1;
}
return sum ;
}
int deter (int **ptr , int n){

long int sum = 0;
if (n==1) return ptr[1][1];
else if ( n==2 ) return ((ptr[1][1] * ptr[2][2]) - (ptr[1][2]*ptr[2][1]));
else if (n>2) {
for (int j=0 , i=0; j<n ;j++){
sum+= ( (kpower(i+j)) * (ptr[i][j])* (deter( "???" , n-1 )) )
}
return (sum);

}

}
int main () {
int n , m;

FILE *in;
cout<<"martabeh matris ra vared konid :";
cin>>n;


int **ptr;
ptr = new int*[n];
for (int i=0 ; i<n ;i++)
ptr[i]=new int[n];
in = fopen("input.txt" , "rt");
for (int i=0 ; i <n ; i++){
for (int j=0 ; j<n ; j++){
fscanf (in ,"%d",&ptr[i][j]);
}
}
m=deter (ptr, n);
cout<<endl<<endl<<"Determinan barabar ast ba :"<< m;
fclose(in);
delete [] ptr;

getch ();
return 0 ;
}



یعنی مشکل اصلیم جایی هست که علامت سوال گذاشتم (؟؟؟)
نمی دونم چی باید بنویسم!