王维来 2015-07-29 01:26 采纳率: 25%
浏览 1575
已结题

此程序为何当选择1的时候没有矩阵输出,好像是形参与实参的关系错了,求解释,求改正。

// juzhen 2.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "stdlib.h"

typedef struct mat
{
int nRow; /* 行数 /
int nCol; /
列数 /
int
pData; /* 指向矩??体的指? */
}MAT;

int MATAlloc(MAT *pMat, int nRow, int nCol)
{
pMat->pData =(int *) malloc (nRow * nCol * sizeof(int));
if(pMat->pData == NULL)
{
printf("memary is error!");
return -1;
}
for(int i=0; i {
for(int j=0; j {
scanf("%d" ,pMat->pData + i*nCol + j);
}
}
pMat->nRow = nRow;
pMat->nCol = nCol;
return 0;
}

void MATFree(MAT* pMat)
{
for(int i=0; inRow; ++i)
{
free (pMat->pData+i);
}
free(pMat->pData);
pMat->pData=NULL;
}

int MATAssign (MAT* pMat1, const MAT* pMat2)
{
if((pMat1->nRow == pMat2->nRow) && (pMat1->nCol == pMat2->nCol))
{
for(int i=0; inRow; ++i)
{
for(int j=0; jnCol; ++j)
{
(pMat1->pData+i*pMat1->nCol+j)=(pMat2->pData+i*pMat1->nCol+j);
}
}
return 0;

}
else
{
printf("not assmble");
return -1;
}
}

int MATAdd(const MAT* pMat1, const MAT* pMat2, MAT* pMat3)
{
if((pMat1->nRow == pMat2->nRow) && (pMat1->nCol == pMat2->nCol))
{
for(int i=0; inRow; ++i)
{
for(int j=0; jnCol; ++j)
{
(pMat3->pData+i*pMat3->nCol+j)=(pMat1->pData+i*pMat1->nCol+j)+*(pMat2->pData+i*pMat1->nCol+j);
}
}
return 0;

}
else
{
printf("not add!");
return -1;
}

}

int MATSub(const MAT* pMat1, const MAT* pMat2, MAT* pMat3)
{
if((pMat1->nRow == pMat2->nRow) && (pMat1->nCol == pMat2->nCol))
{
for(int i=0; inRow; ++i)
{
for(int j=0; jnCol; ++j)
{
(pMat3->pData+i*pMat3->nCol+j)=(pMat1->pData+i*pMat1->nCol+j)-*(pMat2->pData+i*pMat1->nCol+j);
}
}
return 0;

}
else
{
printf("not Sub!");
return -1;
}

}

void MATClear(MAT* pMat)
{
for(int i=0; inRow; ++i)
{
for(int j=0; jnCol; ++j)
{
*(pMat->pData+i*pMat->nCol+j)=0;
}
}
}

void MATMulC (MAT* pMat, int C)
{
for(int i=0; inRow; ++i)
{
for(int j=0; jnCol; ++j)
{
(pMat->pData+i*pMat->nCol+j)=C * ((pMat->pData+i*pMat->nCol+j));
}
}
}

int MATMul (const MAT* pMat1, const MAT* pMat2, MAT* pMat3)
{
if(pMat1->nCol == pMat2->nRow)
{
for(int i=0; inRow; ++i)
{
for(int j=0; jnCol; ++j)
{
(pMat3->pData+i*pMat1->nRow)=((pMat1->pData+i*pMat1->nCol+j)) * (*(pMat2->pData+j*pMat1->nRow+i));
}
}
return 0;

}
else
{
printf("not Mul");
return -1;
}
}

int MATTransport(const MAT* pMat1, MAT* pMat2)
{
for(int i=0; inRow; ++i)
{
for(int j=0; jnCol; ++j)
{
(pMat2->pData+j*pMat1->nRow+i)=(pMat2->pData+i*pMat1->nCol+j);
}
}
return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
int nRow,nCol,sign,C;
MAT Mat, Mat1, Mat2;
MAT pMat = &Mat;
MAT *pMat1 = &Mat1;
MAT *pMat2 = &Mat2;
MAT
MATinit(MAT pMat);
void Print(MAT *pMat);
printf("Welcome To The Matrix Operation system!");
printf("------------------------------------------------\n");
printf("1: Open The Generating matrix function!\n");
printf("2: Open The Release matrix function!\n");
printf("3: Open The Import matrix function!\n");
printf("4: Open The Add matrix function!\n");
printf("5: Open The Matrix subtraction function!\n");
printf("6: Open The Clear matrix function!\n");
printf("7: Open The Matrix multiplication C function!\n");
printf("8: Open The Matrix multiplication function!\n");
printf("9: Open The Matrix transpose function!\n");
printf("------------------------------------------------\n");
printf("Please Select operation type:");
scanf("%d",&sign);
switch(sign)
{
case 1:
{
/*MAT Mat;
pMat = &Mat;
int nRow=0, nCol=0;
printf("Please input the number of rows: ");
scanf("%d",&nRow);
putchar('\n');
printf("Please input the number of columns: ");
scanf("%d",&nCol);
putchar('\n');
printf("Please input %dX%d Matrix:\n",nRow,nCol);
MATAlloc(pMat,nRow,nCol);
/
pMat = MATinit(pMat);
Print(pMat);
}
break;
case 2:
{
MATFree(pMat);
}
break;
case 3:
{
pMat1 = MATinit(pMat1);
pMat2 = MATinit(pMat2);
MATAssign (pMat1, pMat2);
Print(pMat1);
}
break;
case 4:
{
pMat1 = MATinit(pMat1);
pMat2 = MATinit(pMat2);
pMat = MATinit(pMat);
MATAdd(pMat1, pMat2,pMat);
Print(pMat);
}
break;
case 5:
{
pMat1 = MATinit(pMat1);
pMat2 = MATinit(pMat2);
pMat = MATinit(pMat);
MATSub(pMat1, pMat2,pMat);
Print(pMat);
}
break;
case 6:
{
MATClear(pMat);
Print(pMat);
}
break;
case 7:
{
pMat = MATinit(pMat);
printf("Please input the number of C: ");
scanf("%d",&C);
putchar('\n');
MATMulC (pMat, C);
Print(pMat);
}
break;
case 8:
{
pMat1 = MATinit(pMat1);
pMat2 = MATinit(pMat2);
pMat = MATinit(pMat);
MATMul (pMat1, pMat2, pMat);
Print(pMat);
}
break;
case 9:
{
pMat1 = MATinit(pMat1);
pMat2 = MATinit(pMat2);
MATTransport(pMat1, pMat2);
Print(pMat);
}
break;
}
return 0;
}

MAT* MATinit(MAT *pMat)
{
MAT Mat;
pMat = &Mat;
int nRow=0, nCol=0;
printf("Please input the number of rows: ");
scanf("%d",&nRow);
putchar('\n');
printf("Please input the number of columns: ");
scanf("%d",&nCol);
putchar('\n');
printf("Please input %dX%d Matrix:\n",nRow,nCol);
MATAlloc(pMat,nRow,nCol);
return pMat;
}

void Print(MAT pMat)
{
printf("The result is:\n");
for(int i=0; inRow; ++i)
{
for(int j=0; jnCol; ++j)
{
printf("%d ",
(pMat->pData+i*pMat->nCol+j));
}
putchar('\n');
}
while(1);
}

  • 写回答

1条回答 默认 最新

  • xiaohuihuicb 2015-07-31 11:13
    关注

    太长了,所以没人看,建议你把注释稍微写一下再放上来

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。