问题描述:
从一单精度浮点数串中找出乘积最大的连续的4个浮点数。例如在下列浮点数串[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 5.0, 3.0, 3.0, 2.0, 9.0, 1.0, 2.0]找到[4.0,5.0,6.0,5.0].
命令行:
> answer1 data1.dat
输入文件格式:
含有以二进制形式存放的浮点数的文件, 浮点数数量大概在若干千万。
输出结果:
打印该连续4个单元的首单元序号(以零为起始),以及该连续4个单元的乘积。
程序框架:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <alloc.h>
int main(int argc, char *argv[])
{
float *farray, product;
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);
/********************************/
/*在这里处理数据*/
/********************************/
/*输出结果*/
printf("乘积=%f 首数的序号=%d/n", product, index);
free(farray);
/********************************/
}
最先能想到的想法就是遍历,需要做4*n次浮点数乘法.
暂时还没有别的好办法
本文介绍了一种算法思路,用于从大量单精度浮点数中找出乘积最大的连续四个数,并给出了实现该功能的C语言程序框架。讨论了通过遍历方式处理数据的方法。

414

被折叠的 条评论
为什么被折叠?



