サンプルアルゴリズムは次のとおりです。
- 範囲の数と、各範囲の最小値と最大値を決定します。
- すべての範囲を反復処理し、数値を各範囲の最小値および最大値と比較します。
- いずれかの範囲にある場合は、その範囲の最小値に等しく設定してください。
- 範囲内にない場合は、必要なことをすべて実行してください。
次のコードは、このアルゴリズムをCで実装する例を示しています。
#include <stdio.h>
#include <stdlib.h>
/*We assume there is a fixed number of ranges*/
#define RANGE_COUNT 4
int main(int argc, char** argv){
/*Set the minimum and maximum values for each range*/
int ranges[RANGE_COUNT][2] = {{0, 5}, {20, 20}, {25, 40}, {50, 100}};
int x = 0, num = 0;
/*In this example, we are using the command-line for input*/
if(argc != 2){
fprintf(stderr, "Usage: %s <number>", argv[0]);
exit(1);
}
/*We need to ensure that the input is a number*/
if(!(num = atoi(argv[1])) && argv[1][0] != '0'){
fprintf(stderr, "Error: \"%s\" is not a number", argv[1]);
exit(1);
}
/*See if the number is in any of the ranges*/
for(x = 0; x < RANGE_COUNT; x++){
if(num >= ranges[x][0] && num <= ranges[x][1]){
/*If the number is in a range, say which one it is*/
printf("The number %d is in the range %d..%d\n",
num, ranges[x][0], ranges[x][1]);
/*Set the number equal to the minimum value of the range it is in*/
num = ranges[x][0];
printf("num = %d\n", num);
exit(0);
}
}
/*If the number is not in any of these ranges, indicate that it is not*/
printf("The number %d is not in any of these ranges\n", num);
return 0;
}