gpt4 book ai didi

c++ - 帮助显示两个矩阵的总和(使用链表)

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:00:55 25 4
gpt4 key购买 nike

嘿,我在这个程序中显示我的结果时遇到问题,但程序可以编译。知道出了什么问题吗?该程序的目的是获取两个 2 x 2 矩阵并将它们相加以创建名为 result 的矩阵。但是当涉及到显示每个矩阵(A、B 和结果)中的值时,它会挂起。为什么 at the search(A,0,0) 调用?

-谢谢

#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);
}

}

最佳答案

我假设这是家庭作业。如果电流不满足您检查的两个条件中的任何一个,循环将如何结束。您需要在某个时候将 current 设置为列表的下一个节点。

 while (current != NULL){
if (current == NULL){break;
}
if ( (current->row == srow) && (current->column == scol) ){
display(current,srow,scol,current->value); //call to display
}
}

关于c++ - 帮助显示两个矩阵的总和(使用链表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2360510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com