【C++】代码实现:截取数组中的数据(方向:从左向右截取、从右向左截取;按指定比例截取数据)

一、工作场景:

在实际工作场景中,需要从存储了数据的一个数组中截取数据:

1、截取方向允许:(1)从左向右(即:从首部向尾部);(2)从右向左(即:从尾部向首部)。

2、按指定比例截取数据:50%~100%(不得少于 50%)。

3、因为是以动态链接库(DLL)文件的方式提供给 Java 程序调用,所以增加了以下参数:输入数组的大小、输出数组的大小。

二、代码特点:

我最得意的是计算确定提取数据起始位置下标的那部分。

两句代码搞定,自诩为神来之笔。------得意一下,哈哈哈。。。。

三、实现代码:

//样本数据截取
extern "C" __declspec(dllexport) int SampleDataTruncate(double* input, long size, int direct, int ratio, double* output, long &size_output) {

	if (ratio < 50) return 1;   //截取比例不得小于 50%
	long start(0), end(0);

	//direct取值只能是1或2(1-从左开始截取  2-从右开始截取)
	switch (direct)
	{
	case 1:
		//计算从左截取起始下标
		start = 0;
		end = size*ratio / 100;
		break;

	case 2:
		//计算从右截取起始下标
		start = size* (100 - ratio) / 100;
		end = size;
		break;

	default:
		return 1;
	}

	long j(0);
	for (long i = start; i < end; i++)
	{
		output[j] = input[i];
		++j;
	}

	size_output = j;

	return 0;
}

猜你喜欢

转载自blog.csdn.net/kingkee/article/details/94392362
今日推荐