嘿那裏,我有問題顯示我的結果在這個程序,但程序編譯。任何想法是什麼問題?該程序的目的是取兩個2×2的矩陣並添加它們以創建稱爲結果的矩陣。但是當涉及在每個矩陣(A,B和結果)中顯示值時,它會掛起。爲什麼在搜索(A,0,0)時打電話?幫助顯示兩個矩陣的總和(使用鏈表)
-Thanks
#include <stdio.h>
int gvalue;
struct Node {
int row;
int column;
int value;
Node *next;
};
void AddNode(Node *&listpointer,int r,int c,int v);
void getValue(Node *listpointer, int grow, int gcol);
void search(Node *listpointer, int srow, int scol);
void display(Node *listpointer,int drow,int dcol,int dvalue);
Node *A,*B,*result;
int main(){
A = NULL;
B = NULL;
result = NULL;
int row1p1,row1p2,row2p1,row2p2; //row 1 position 1 etc
//matrix A values!
printf("Enter the first row of values for matrix A: ");
scanf("%d %d",&row1p1,&row1p2);
printf("\nEnter the second row of values for matrix A: ");
scanf("%d %d",&row2p1,&row2p2);
AddNode(A,0,0,row1p1); //matrix created...
AddNode(A,0,1,row1p2);
AddNode(A,1,0,row2p1);
AddNode(A,1,1,row2p2);
//matrix B values!
printf("\n\nEnter the first row of values for matrix B: ");
scanf("%d %d",&row1p1,&row1p2);
printf("\nEnter the second row of values for matrix B: ");
scanf("%d %d",&row2p1,&row2p2);
AddNode(B,0,0,row1p1); //matrix created...
AddNode(B,0,1,row1p2);
AddNode(B,1,0,row2p1);
AddNode(B,1,1,row2p2);
//next part...
int a_row1p1,a_row1p2,a_row2p1,a_row2p2;
int b_row1p1,b_row1p2,b_row2p1,b_row2p2;
int sum;
//-------------------------------------------------------------------------------|
getValue(A,0,0); //RESULT NODE for position 0,0
a_row1p1=gvalue;
getValue(B,0,0);
b_row1p1=gvalue;
sum=a_row1p1+b_row1p1;
AddNode(result,0,0,sum);
getValue(A,0,1); //RESULT NODE for position 0,1
a_row1p2=gvalue;
getValue(B,0,1);
b_row1p2=gvalue;
sum=a_row1p2+b_row1p2;
AddNode(result,0,1,sum);
getValue(A,1,0); //RESULT NODE for position 1,0
a_row2p1=gvalue;
getValue(B,1,0);
b_row2p1=gvalue;
sum=a_row2p1+b_row2p1;
AddNode(result,1,0,sum);
getValue(A,1,1); //RESULT NODE for position 1,1
a_row2p2=gvalue;
getValue(B,1,1);
b_row2p2=gvalue;
sum=a_row2p2+b_row2p2;
AddNode(result,1,1,sum);
printf("success\n");
//-------------------------------------------------------------------------------|
search(A,0,0);
printf("success\n"); //issue????
search(A,0,1);
search(A,1,0);
search(A,1,1);
search(B,0,0);
search(B,0,1);
search(B,1,0);
search(B,1,1);
search(result,0,0);
search(result,0,1);
search(result,1,0);
search(result,1,1);
return 0;
}
void AddNode(Node *&listpointer,int r,int c,int v){
Node *temp;
temp = new Node;
temp->row = r;
temp->column = c;
temp->value = v;
temp->next = listpointer;
listpointer = temp;
}
void getValue(Node *listpointer, int grow, int gcol){
Node *current;
current = listpointer;
while (current != NULL){
if (current == NULL){break;}
if ((current->row == grow) && (current->column == gcol)){
gvalue = current->value;
break;
}
current = current->next;
}
}
void search(Node *listpointer, int srow, int scol){
Node *current;
current = listpointer;
while (current != NULL){
if (current == NULL){break;
}
if ((current->row == srow) && (current->column == scol)){
display(current,srow,scol,current->value); //call to display
}
}
}
void display(Node *listpointer,int drow,int dcol,int dvalue){
if (listpointer == A){
printf("\n\nMatrix A\n");
}
if (listpointer == B){
printf("Matrix B\n");
}
if (listpointer == result){
printf("Matrix Result\n");
}
//---------------------------------------------------------|
if ((drow == 0) && (dcol == 0)){
printf("%d ",dvalue);
}
if ((drow == 0) && (dcol == 1)){
printf("%d\n",dvalue);
}
if ((drow == 1) && (dcol == 0)){
printf("%d ",dvalue);
}
if ((drow == 1) && (dcol == 0)){
printf("%d\n\n",dvalue);
}
}
您是否設法縮小到比您的整個應用程序短? – stefanB 2010-03-02 02:19:58
我縮小了問題的顯示功能,我似乎無法得到任何值在這個時候打印到屏幕上 – silent 2010-03-02 02:34:20