如何找到哪个值最接近于一个号码在C 2 [英] How to find which value is closest to a number in C?
本文介绍了如何找到哪个值最接近于一个号码在C 2的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下的code在C:
#定义CONST 1200
INT A = 900;
INT B = 1050;
INT C = 1400;
如果(A_CLOSEST_TO_CONST){
// 做一点事
}
什么是一个方便的方法来检查是否是否是最接近的价值为const中的a,b和c?
编辑:
没关系,如果我有3个变量,或这样的数组(它可能会超过3个元素):
的int值[3] = {900 1050 1400};
解决方案
这适用于三个变量:
IF(ABS(A - 常数)< = ABS(B - CONST)及和放大器; ABS(A - 常数)< = ABS(C - 常数)){
//一个是最接近
}
此可与一种或多种元素的数组,其中n是元件的数量:
INT is_first_closest(INT值[],INT N){
INT DIST = ABS(数值[0] - 常数);
的for(int i = 1;我n种; ++ I){
如果(ABS(值[I] - 常数)< DIST){
返回0;
}
}
返回1;
}
请参阅它的在线工作: ideone
I have the following code in C:
#define CONST 1200
int a = 900;
int b = 1050;
int c = 1400;
if (A_CLOSEST_TO_CONST) {
// do something
}
What is a convenient way to check whether if a is the closest value to CONST among a,b and c ?
Edit:
It doesn't matter if I have 3 variables or an array like this (it could be more than 3 elements):
int values[3] = {900, 1050, 1400};
解决方案
This works for three variables:
if (abs(a - CONST) <= abs(b - CONST) && abs(a - CONST) <= abs(c - CONST)) {
// a is the closest
}
This works with an array of one or more elements, where n is the number of elements:
int is_first_closest(int values[], int n) {
int dist = abs(values[0] - CONST);
for (int i = 1; i < n; ++i) {
if (abs(values[i] - CONST) < dist) {
return 0;
}
}
return 1;
}
See it working online: ideone
这篇关于如何找到哪个值最接近于一个号码在C 2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文