如何找到哪个值最接近于一个号码在C 2 [英] How to find which value is closest to a number in C?

查看:158
本文介绍了如何找到哪个值最接近于一个号码在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]  - 常数)< D​​IST){
            返回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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆