作者j75466 (阿弟仔)
看板C_and_CPP
標題[問題]C 程式除錯
時間Fri May 29 14:23:48 2009
#include <stdio.h>
#include<stdlib.h>
void dumpmatrix(int n,int*p){
int i,j;
for(j=0;j<n;j++){
for(i=0;i<n;i++) {
printf("a[%d,%d]=%d,",j,i,*p++);
}
printf("\n");
}
}
int*makematrix(int n,int*m,int col,int*newm){
int i,j;
int*p=newm;
for(j=n;j<n*n;j+=n) {
for(i=0;i<n;++i) {
if(i!=col) *p++=*(m+j+i);
}
}
printf("previous matrix\n");
dumpmatrix(n,m);
printf("cofactor by %d\n",col);
dumpmatrix(n-1,newm);
return newm;
dumpmatrix(n-1,newm);
return newm;
}
int det(int n,int*m) {
int i,mydet;
int*newm;
if(n==2) return *m * *(m+3) - *(m+1) * *(m+2);
for(mydet=i=0;i<n;++i) {
if(*(m+i)!=0){
newm=(int*)malloc(sizeof(int)*(n-1)*(n-1));
mydet+=(i&1?-1:1)* *(m+i) * det(n-1,makematrix(n,m,i,newm));
free(newm);
}
}
return mydet;
}
int determinant(int n,int*m){
int ntotal=n*n;
int value,sum;
int i,j,k;
for(sum=0,i=0;i<ntotal;i+=n) {
printf("det %d\n",i);
value=1;
for(j=0,k=i;j<n;++j,k=(k+n+1)%ntotal) {
value=1;
for(j=0,k=i;j<n;++j,k=(k+n+1)%ntotal) {
value*=*(m+k);
printf("*m[%d]=%d, value=%d\n",k,m[k], value);
}
sum+=value;
}
for(i=n-1;i<ntotal;i+=n) {
printf("det %d\n",i);
value=1;
for(j=0,k=i;j<n;++j,k=(k+2)%ntotal) {
value*=*(m+k);
printf("*m[%d]=%d, value=%d\n",k,m[k], value);
}
sum-=value;
}
if(sum<0)sum= -sum;
return sum;
}
main(int argc,char*argv[])
{
int x[100];
int i;
for(i=2;i<argc;++i)x[i-2]=atoi(argv[i]);
dumpmatrix(atoi(argv[1]),x);
printf("det=%d\n",det(atoi(argv[1]),x));
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.49.245
1F:→ sosokill:直接END...完全不想看 啥說明都沒有 05/29 14:25
2F:→ james732:同樓上 05/29 14:57
3F:→ lovewa:啊謀賊細蝦咪小朋友呀?...冏 05/29 15:05
4F:推 funkastic:END 05/29 15:51
5F:→ johnhmj:他可能用devc++寫的,所以他不知道怎麼用它來除錯。 05/29 15:51
6F:→ johnhmj:這個程式可能是「矩陣產生式」… 05/29 15:53
7F:→ johnhmj:微軟的免費VSexpress可以去下載來用,那個除錯很方便的。 05/29 15:55
8F:推 ianfang:拜託 請描述一下問題 或是編譯器錯誤訊息吧... 05/29 16:24
9F:推 yukang:人眼compiler 05/29 16:25
10F:推 ianfang:以前我們老師上課解釋code都會說 "假設我是compiler"... 05/29 16:27
11F:→ Laputaet3:想噓 05/29 17:31
12F:→ final01:假設是compiler那該假設是哪種compiler GCC? 05/29 18:54
13F:推 gozha:從來沒用過debugger ...= =" 05/29 21:18
14F:推 sarsenwen:改用c++寫吧 c比較不直觀 06/03 22:34