
数据结构 程序设计题目 求高手作答 急 答案满意你要多少分我给多少分!
两个4乘以4二维数组求和任务:要求数组初始化由键盘输入,并保证正确的输出要求附带程序说明,能看懂就行~~楼下的你的程序不符合要求啊最重要的是。。。你的程序输入会出现死循环...
两个4乘以4二维数组求和
任务:要求数组初始化由键盘输入,并保证正确的输出
要求附带程序说明,能看懂就行~~
楼下的 你的程序不符合要求啊 最重要的是 。。。你的程序输入会出现死循环。。。
二楼的~~ 你的程序没有直接定义4*4的数组 而且程序执行后,没有B数组的元素输入!! 我晕了
不过还是谢谢你们的回答~~
希望有高手能原创个~~~ 展开
任务:要求数组初始化由键盘输入,并保证正确的输出
要求附带程序说明,能看懂就行~~
楼下的 你的程序不符合要求啊 最重要的是 。。。你的程序输入会出现死循环。。。
二楼的~~ 你的程序没有直接定义4*4的数组 而且程序执行后,没有B数组的元素输入!! 我晕了
不过还是谢谢你们的回答~~
希望有高手能原创个~~~ 展开
展开全部
这一点都不难嘛……
#include<stdio.h>
#include<malloc.h>
#define max 30
typedef struct {
int i,j,e;
}Triple;
typedef struct node{
Triple data[max+1];
int rpos[max+1];
int mu,nu,tu;
}RLSMatrix;
void main()
{RLSMatrix A, B,C;
int i,j,tp,t,p,brow,ccol,m,ctemp[max+1],num[max+1]={0};
do{
printf("输入矩阵A的行,列,非零元个数:");
scanf("%d%d%d",&A.mu,&A.nu,&A.tu);
printf("输入矩阵B的行,列,非零元个数:");
scanf("%d%d%d",&B.mu,&B.nu,&B.tu);
}while(A.nu!=B.mu);
printf("输入A中元素:");
for(i=1;i<=A.tu;i++)
{
scanf("%d%d%d",&A.data[i].i,&A.data[i].j,&A.data[i].e);
}
A.rpos[1]=1;
for(t=1;t<=A.tu;t++)num[A.data[t].i]++;
for(t=2;t<=A.mu;t++)A.rpos[t]=A.rpos[t-1]+num[t-1];
printf("输入B中元素:");
for(i=1;i<=B.tu;i++)
{
scanf("%d%d%d",&B.data[i].i,&B.data[i].j,&B.data[i].e);
}
B.rpos[1]=1;
for(t=1;t<=max;t++)num[t]=0;
for(t=1;t<=B.tu;t++)num[B.data[t].i]++;
for(t=2;t<=B.mu;t++)B.rpos[t]=B.rpos[t-1]+num[t-1];
C.mu=A.mu;C.nu=B.nu;C.tu=0;
if((A.tu*B.tu)==0) printf("error");
for(i=1;i<=A.mu;i++)
{
for(m=1;m<=max;m++)ctemp[m]=0;
C.rpos[i]=C.tu+1;
if(i<A.mu) tp=A.rpos[i+1];else tp=A.tu+1;
for(j=A.rpos[i];j<tp;j++)
{
brow=A.data[j].j;
if(brow<B.mu) t=B.rpos[brow+1];
else t=B.tu+1;
for(p=B.rpos[brow];p<t;p++)
{
ccol=B.data[p].j;
ctemp[ccol]+=A.data[j].e*B.data[p].e;
}
}
for(ccol=1;ccol<=C.nu;ccol++)
{
if(ctemp[ccol])
{
if((++C.tu)>max){printf("error");break;}
else{C.data[C.tu].i=i;C.data[C.tu].j=ccol;C.data[C.tu].e=ctemp[ccol];}
}
}
}
for(t=1;t<=C.tu;t++)
printf("%d %d %d\n",C.data[t].i,C.data[t].j,C.data[t].e);
}
#include<stdio.h>
#include<malloc.h>
#define max 30
typedef struct {
int i,j,e;
}Triple;
typedef struct node{
Triple data[max+1];
int rpos[max+1];
int mu,nu,tu;
}RLSMatrix;
void main()
{RLSMatrix A, B,C;
int i,j,tp,t,p,brow,ccol,m,ctemp[max+1],num[max+1]={0};
do{
printf("输入矩阵A的行,列,非零元个数:");
scanf("%d%d%d",&A.mu,&A.nu,&A.tu);
printf("输入矩阵B的行,列,非零元个数:");
scanf("%d%d%d",&B.mu,&B.nu,&B.tu);
}while(A.nu!=B.mu);
printf("输入A中元素:");
for(i=1;i<=A.tu;i++)
{
scanf("%d%d%d",&A.data[i].i,&A.data[i].j,&A.data[i].e);
}
A.rpos[1]=1;
for(t=1;t<=A.tu;t++)num[A.data[t].i]++;
for(t=2;t<=A.mu;t++)A.rpos[t]=A.rpos[t-1]+num[t-1];
printf("输入B中元素:");
for(i=1;i<=B.tu;i++)
{
scanf("%d%d%d",&B.data[i].i,&B.data[i].j,&B.data[i].e);
}
B.rpos[1]=1;
for(t=1;t<=max;t++)num[t]=0;
for(t=1;t<=B.tu;t++)num[B.data[t].i]++;
for(t=2;t<=B.mu;t++)B.rpos[t]=B.rpos[t-1]+num[t-1];
C.mu=A.mu;C.nu=B.nu;C.tu=0;
if((A.tu*B.tu)==0) printf("error");
for(i=1;i<=A.mu;i++)
{
for(m=1;m<=max;m++)ctemp[m]=0;
C.rpos[i]=C.tu+1;
if(i<A.mu) tp=A.rpos[i+1];else tp=A.tu+1;
for(j=A.rpos[i];j<tp;j++)
{
brow=A.data[j].j;
if(brow<B.mu) t=B.rpos[brow+1];
else t=B.tu+1;
for(p=B.rpos[brow];p<t;p++)
{
ccol=B.data[p].j;
ctemp[ccol]+=A.data[j].e*B.data[p].e;
}
}
for(ccol=1;ccol<=C.nu;ccol++)
{
if(ctemp[ccol])
{
if((++C.tu)>max){printf("error");break;}
else{C.data[C.tu].i=i;C.data[C.tu].j=ccol;C.data[C.tu].e=ctemp[ccol];}
}
}
}
for(t=1;t<=C.tu;t++)
printf("%d %d %d\n",C.data[t].i,C.data[t].j,C.data[t].e);
}
展开全部
#include<iostream>
using namespace std;
int i,j;
int main()
{
int a[4][4],b[4][4],sum[4][4];
for(i=0;i<4;i++)
for(j=0;j<4;j++)
cin>>a[i][j];
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{
cin>>b[i][j];
sum[i][j]=a[i][j]+b[i][j];
}
cout<<endl;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
cout<<sum[i][j]<<"\t";
cout<<endl;
}
return 0;
}
/***********************
测试结果
1 2 3 4
4 5 6 7
2 3 4 5
7 8 9 6
3 2 1 4
4 8 9 3
2 5 8 7
4 5 6 7
4 4 4 8
8 13 15 10
4 8 12 12
11 13 15 13
Press any key to continue
**********************/
这么简单的东西,哎,算是我第一次在百度回答问题,好玩儿~~~~~~
using namespace std;
int i,j;
int main()
{
int a[4][4],b[4][4],sum[4][4];
for(i=0;i<4;i++)
for(j=0;j<4;j++)
cin>>a[i][j];
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{
cin>>b[i][j];
sum[i][j]=a[i][j]+b[i][j];
}
cout<<endl;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
cout<<sum[i][j]<<"\t";
cout<<endl;
}
return 0;
}
/***********************
测试结果
1 2 3 4
4 5 6 7
2 3 4 5
7 8 9 6
3 2 1 4
4 8 9 3
2 5 8 7
4 5 6 7
4 4 4 8
8 13 15 10
4 8 12 12
11 13 15 13
Press any key to continue
**********************/
这么简单的东西,哎,算是我第一次在百度回答问题,好玩儿~~~~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当我没回答过,有分就了不起阿
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询