2010-12-20 5 views
1

quelqu'un peut-il s'il vous plaît élaborer comment trouver le plus grand de quatre nombres sans utiliser l'opérateur conditionnel.pour 3 nombres que j'ai fait mais pour quatre nombres comment écrire différentes comparaisons.plus grand nombre sans opérateur conditionnel

+9

Est-ce une question de devoirs? En outre, vous devriez accepter plus de réponses. –

+1

Montrez votre exemple. Est-ce que * sans utiliser d'opérations conditionnelles * signifie que vous pouvez utiliser des opérations cachées? – ruslik

Répondre

1

Il est un moyen standard pour calculer min ou max dans les Arithmétique du complément de 2 sans utiliser conditionals:

int max(int a, int b){ 
    unsigned diff = b - a; // negative if a > b 
    int sign = -(diff >> (sizeof(int) * CHAR_BIT - 1)); // -1 if a > b, 0 otherwise 
    return (a & sign) | (b & ~sign); 
} 

il peut être facilement mis à l'échelle.

1
void main() 
{ 
    int a, b; 
    printf("Enter a and b:"); 
    scanf("%d %d", &a, &b); 
    printf("Maximum number is %d", max(a, b)); 
    getch(); 
} 
int max(int a, int b) 
{ 
    int c, temp; 
    c = a - b; 
    temp = c + abs(c); 
    // To check if the difference is negative or not 
    if(temp) //As suggested by R.. 
    return b; 
    else 
    return a; 
} 

Ce code est pour comparer deux chiffres. Faites cette comparaison pour tous les nombres.

+0

'==' est un opérateur conditionnel –

+3

Ensuite, changez if/else et utilisez 'if (temp)'. –

+2

'abs()' a une condition cachée. – ruslik

1

vous pouvez trouver maximum de deux nombres a, b en utilisant astuce suivante:

(abs (a + b) + abs (ab))/2

Prolonger l'astuce pour autant de numéros que vous voulez.

Questions connexes