Как я могу получить, какая из этих переменных имеет наибольшее значение?
Я должен знать, какая из этих переменных имеет наибольшее значение:
A=1
B=500
C=100
D=700
E=5
F=1000
Какой самый простой способ сделать это?
2 ответа
Вы можете выбрать один из них в качестве потенциальной переменной с наибольшим значением. Затем переберите все переменные. На каждой итерации смотрите, имеет ли эта переменная более высокое значение, чем ваш кандидат. Если это так, замените своего кандидата. Когда вы перебрали все переменные, потенциальная переменная-кандидат является фактической переменной с наибольшим значением.
#include <stdio.h>
#include <limits.h>
#define max(x) max_value(x, #x)
typedef struct _var {
const char *name;
int value;
} Var;
Var max_value(int value, const char *name){
static Var max = {NULL, INT_MIN};
Var temp = { max.name, max.value };
if(name != NULL){
if( max.value < value){
max.name = name;
max.value = value;
temp = max;
}
} else {
temp = max;
max.name = NULL;
max.value = INT_MIN;
}
return temp;
}
int main(void){
int A=1;
int B=500;
int C=100;
int D=700;
int E=5;
int F=1000;
Var v;
v=max(A);
v=max(B);
v=max(C);
v=max(D);
v=max(E);
v=max(F);
/*
max(A);
max(B);
max(C);
max(D);
max(E);
max(F);
v = max_value(INT_MIN, NULL);//and reset
*/
printf("max is %d of variable %s\n", v.value, v.name);//max is 1000 of variable F
return 0;
}