急,第一题!为什么提交会Wrong Answer!大家教教我!

jeffrey_nupt 2007-07-15 09:07:12
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <malloc.h>
#include "omp.h"

int main(int argc, char *argv[])
{
float *farray, product=0;
struct stat buf;
int num,index;

/********************************/
if(stat(argv[1],&buf)) // get the file size
{
printf("The file does not exist\n");
exit(0);
}
num = buf.st_size/sizeof(float);
farray = (float *)malloc(buf.st_size);
FILE *fp=fopen(argv[1],"rb");
fread( farray, sizeof(float), num, fp);
fclose(fp);
/********************************/
/*在这里处理数据*/

#pragma omp parallel for
for(int i=0; i<num-3; i++)
{


float max = farray[i] * farray[i+1] * farray[i+2] * farray[i+3];

if(max > product)
{
product = max;
index = i;
}

}





/********************************/
/*输出结果*/
printf("乘积=%f 首数的序号=%d\n", product, index);
free(farray);
/********************************/
}
...全文
273 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lingyer 2007-07-18
  • 打赏
  • 举报
回复
第一,你的线程内部变量max是不是应该设成private的?
第二,if(max > product){ product = max; index = i; }这句是不是应该保护起来互斥访问?

至于你自己测试正常的问题,你确定在你自己机器上编译的时候是编译成多线程的吗?
openmp缺省的线程数=CPU数,如果在单核的机器上测试,编译时需要强制指定线程数。
jeffrey_nupt 2007-07-16
  • 打赏
  • 举报
回复
我当然测试过,但是没有问题耶……但是为什么发上去就是有问题的呢……
高手快来教教我啊。。谢谢了。
lingyer 2007-07-16
  • 打赏
  • 举报
回复
你的程序有问题,当然会wrong answer。你自己测试过没有?

568

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧