gpt4 book ai didi

c++ - 在 C/C++ 中定义一个数字范围

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:53:35 24 4
gpt4 key购买 nike

有没有一种方法可以将数字范围划分为某些子范围

即如果我们的范围是 1-10

用户输入 1 3 , 4 7 ,7 10我们将范围 1-3 定义为一个范围的一部分,将 4-7 定义为另一个范围的一部分,依此类推。例如,如果输入数字 8,我们将得到范围为 3 的输出。

正在考虑创建一个数组 int arr[10] 并作为用户输入 1 3 for eg then arr[0]=1 and arr[2]=1 , then for 4 7 as arr[ 3]=2 和 arr[6]=2 。但这会遗漏介于两者之间的数字,如果我们从 0 循环到 2,从 3 循环到 6。在数组长度超过 10 的更大范围内,这将是低效的。

有人可以帮助我吗?

最佳答案

定义范围类型:

struct range
{
int low;
int high;
}

然后定义一个这样的数组:

struct range ranges[<some size>] = {0};

定义并实现查找最高 high 和最低 low 值的函数:

int lowest(struct range * ranges, int * plowest);
int highest(struct range * ranges, int * phighest);

输入所有范围并将它们存储在ranges 中。

ranges 上调用 highest()lowest() 并且您有外部间隔:

struct range range_outer = {0};

/* code reading ranges. */

if (0 != lowest(ranges, &range_outer.lowest))
fprintf(stderr, "lowest() failed\n");

if (0 != highest(ranges, &range_outer.highest))
fprintf(stderr, "highest() failed\n");

为了帮助 lowest()highest(),按成员 lowranges 进行排序可能是有意义的code> 由成员 high 为前者提供。

int sort_by_low(struct ranges * ranges); 
int sort_by_high(struct ranges * ranges);

可以使用 qsort() 轻松完成数组排序。功能。

关于c++ - 在 C/C++ 中定义一个数字范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22882600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com