2015-04-05 11 views
0

Напишите определение функции minMax, которая имеет пять параметров. Первые три параметра являются целыми числами. Последние два задаются функцией с наибольшим и наименьшим из значений первых трех параметров. Функция не возвращает значение.Почему мой сортировочный код не работает?

Функция может быть использована следующим образом:

Int А = 31, B = 5, С = 19 большой, малый; minMax (a, b, c, & большой, & маленький);/* Большой теперь 31 // маленьких теперь 5 */

void minMax (int a, int b, int c, int *big, int *small) { 
    if (a > b && a > c) 
     *big = a; 
    else if (b>a && b>c) 
      *big = b; 
    else if (c>a && c>b) 
      *big = c; 

    if (a < b && a < c) 
     *small = a; 
    else if (b<a && b<c) 
     *small = b; 
    else if (c<a && c<b) 
     *small = c; 
return; 
} 

Примечание: ⇒ Ваша функция не изменять значение мало. Убедитесь, что вы разыгрываете его в своей функции.

Общие ошибки: Убедитесь, что ваши утверждения if/else верны. Убедитесь, что у вас есть точки с запятой в конце каждого утверждения. Убедитесь, что вы назначаете правильные значения большим и малым.

+1

Определить «не работает». Какой результат вы наблюдаете, что вы ожидаете, и как они отличаются друг от друга? –

+0

Итак, вы пробовали код? –

+0

Ваша функция неправильно обрабатывает ситуации с двумя одинаковыми значениями. – SomeWittyUsername

ответ

0

Как об этом:

void minMax(int x, int y, int z, int * big, int * small) 
{ 
    *big = x; 

    if (y > *big) 
    { 
     *big = y; 
    } 

    if (z > *big) 
    { 
     *big = z; 
    } 

    *small = x; 

    if (y < *small) 
    { 
     *small = y; 
    } 

    if (z < *small) 
    { 
     *small = z; 
    } 
} 
+0

Да, это сработало. Я также понял, что я сделал не так. Спасибо! – Jahaha

+0

Ну, вы могли бы поддержать ответ и дать ему тиканье. – Robinson

1

Если 3 числа a, b и c все разные, ваш код должен работать нормально. Но если значения 2 (или даже все 3) совпадают, вы получите сообщение об ошибке, потому что вы всегда проверяете «строго больше» и «строго меньше», то есть используете > и < вместо >= и <=. Попробуйте с a = 31, B = 31, C = 31, и вы увидите, что вы не присвоите значение *big или не *small.

Смежные вопросы