matrix1

//Writed by YaoPu, Oct 10,2016
//connect via Email:yaopu@iccas.ac.cn
#include"mpi.h"
#include"stdio.h"
#include<stdlib.h>
const int rows = 400; //the rows of matrix
const int cols = 100; //the cols of matrix
int main(int argc, char **argv)
{
int i,j,k,myid,numprocs,anstag;
int A[rows][cols],B[cols],C[rows];
int masterpro,buf[cols],ans,cnt;
double starttime,endtime;
double tmp,totaltime;
MPI_Status status;
masterpro = 0;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
for(cnt=0;cnt<10;cnt++)
{
if(numprocs<2){
printf("Error:Too few processors!\n");
MPI_Abort(MPI_COMM_WORLD,99);
}

if (myid==masterpro){
starttime = MPI_Wtime();
for(i=0;i<cols;i++)
{
B[i]=rand()%10;
for(j=0;j<rows;j++)
{
A[j][i]=rand()%10;
}
}
//bcast the B vector to all slave processors
MPI_Bcast(B,cols,MPI_INT,masterpro,MPI_COMM_WORLD);
//partition the A matrix to all slave processors
for(i=1;i<numprocs;i++)
{
for(k=i-1;k<rows;k+=numprocs-1)
{
for(j=0;j<cols;j++)
{
buf[j]=A[k][j];
}
MPI_Send(buf,cols,MPI_INT,i,k,MPI_COMM_WORLD);
}
}
}
else{
//starttime = MPI_Wtime();
MPI_Bcast(B,cols,MPI_INT,masterpro,MPI_COMM_WORLD);
//every processors receive the part of A matrix, and make Mul Operator with B vector
for(i= myid-1;i<rows;i+=numprocs-1){
MPI_Recv(buf,cols,MPI_INT,masterpro,i,MPI_COMM_WORLD,&status);
ans=0;
for(j=0;j<cols;j++)
{
ans=buf[j]*B[j];
}
MPI_Send(&ans,1,MPI_INT,masterpro,i,MPI_COMM_WORLD);
}
//endtime = MPI_Wtime();
//tmp = endtime-starttime;
}
if(myid==masterpro){
//receive the result from all slave processor
for(i=0;i<rows;i++)
{
MPI_Recv(&ans,1,MPI_INT,MPI_ANY_SOURCE,MPI_ANY_TAG,MPI_COMM_WORLD,&status);
//sender = status.MPI_RESOURCE;
anstag = status.MPI_TAG;
C[anstag] =ans;
}
//print result 
/* for (i=0;i<rows;i++)
{
printf("%d",C[i]);
if((i+1)%20==0)
printf("\n");
}
*/
}
}
endtime = MPI_Wtime();
totaltime= endtime - starttime;
if (myid == masterpro)
printf("total time :%f s.\n",totaltime);
MPI_Finalize();
return 0;
}

在 FastReport 中,Matrix1 控件是一种用于展示矩阵数据(如交叉表)的控件,其值的设置可以通过数据绑定或表达式的方式完成。控件的值通常与数据源中的字段相关联,也可以通过表达式动态计算。 ### 数据绑定方式设置 Matrix1 控件的值 Matrix1 控件通常用于展示多维数据,其值字段可以通过绑定到数据源中的某个字段来设置。在报表设计器中,可以将数据源字段拖动到 Matrix1 控件的值区域中,从而实现数据绑定。例如,如果数据源中有一个名为 `SalesAmount` 的字段,可以将其绑定到矩阵的值区域以展示销售金额数据。 ### 表达式方式设置 Matrix1 控件的值 除了直接绑定字段,还可以通过表达式来动态设置 Matrix1 控件的值。表达式可以在控件的属性窗口中设置,通常在 `Value` 或 `Expression` 属性中输入类似以下格式的表达式: ```csharp [DataSourceFieldName] * 1.1 // 假设将数据源字段值乘以 1.1 ``` 这种表达式方式允许进行复杂的计算,例如根据其他字段的值进行条件判断或数学运算。 ### 动态设置 Matrix1 控件的值(通过代码) 在某些情况下,需要在运行时动态设置 Matrix1 控件的值。可以通过编写代码在报表的脚本部分实现这一功能。例如,在 FastReport 的脚本中使用 C#: ```csharp private void Matrix1_BeforePrint(object sender, EventArgs e) { // 动态设置矩阵单元格的值 Matrix1.Value = GetDynamicValue(); // GetDynamicValue() 是一个自定义方法 } ``` 上述代码展示了如何在 `BeforePrint` 事件中动态设置 Matrix1 控件的值,`GetDynamicValue()` 方法可以根据业务逻辑返回相应的值。 ### 注意事项 - 在设置 Matrix1 控件的值时,确保数据源的结构与控件的行列设置相匹配,以避免数据绑定错误。 - 如果使用表达式,应确保表达式语法正确,并且引用的字段存在于数据源中。 - 对于复杂的矩阵报表,可能需要对数据进行预处理,以确保 Matrix1 控件能够正确展示所需数据。 通过上述方法,可以灵活地设置 FastReport 中 Matrix1 控件的值,以满足不同场景下的报表需求。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值