Алгоритм сравнения 4 чисел.

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by seregenka43, 4 Nov 2012.

  1. seregenka43

    seregenka43 New Member

    Joined:
    7 Jan 2010
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте! Извините уж за совсем нубский вопрос, но не могли бы вы мне подсказать алгоритм сравнения 4 чисел. Т.е. нужно найти 2 точки на координатной прямой, одно из которых будет минимальным, другое максимальным. Сравнение каждого отдельно - очень долгий и громоздкий процесс, может есть другие способы? Спасибо за внимание.
     
  2. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
  3. seregenka43

    seregenka43 New Member

    Joined:
    7 Jan 2010
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
  4. k0tt0d

    k0tt0d Member

    Joined:
    19 Nov 2009
    Messages:
    52
    Likes Received:
    20
    Reputations:
    4
    пусть числа a b c d, найдем максимальный
    Code:
    если (a>b)&(a>c)&(a>d) то а, иначе
    если (b>c)&(b>d) то b, иначе
    если (c>d) то с иначе d.
    далее исключаем максимальное число из первоначального набора и аналогично ищем минимальное из трех оставшихся.
     
    #4 k0tt0d, 5 Nov 2012
    Last edited: 5 Nov 2012
  5. ef1r

    ef1r New Member

    Joined:
    25 May 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Может я неправильно понял суть вопроса, но почему бы не отсортировать числа по неубыванию?
    //g++ -o main.cpp
    //a.out
    #include <iostream>
    #include <string>
    using namespace std;

    int compare (const void * a, const void * b)
    {
    return ( *(int*)a - *(int*)b );
    }
    int main()
    {
    int mas[4], tmp;
    for(int i=0;i<4;i++){
    cin >> tmp;
    mas = tmp; }
    qsort(mas, 4, sizeof(int), compare);
    cout << "max = " << mas[3] << "\nmin = " << mas[0] << endl;

    return 0;
    }
     
  6. forever21

    forever21 New Member

    Joined:
    3 Nov 2012
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    // pos - позиция по минимальному, pos2 позиция максимального. масив а - где x количество твоих элементов, и указатели на минимальную и максимальную позицию, чтоб при возвращении вернуть 2 числа.

    int MinAndMaxFrom(int pos, int pos2, int a[x], int *minp, int *maxp)
    {
    int minpos=pos;
    int maxpos=pos2;
    for(int i=pos+1; i<=pos2;i++)
    {
    if (a<a[minpos]) minpos=i;
    if (a>a[maxpos]) maxpos=i;
    }
    *minp=minpos;
    *maxp=maxpos;
    return minpos;
    }


    а потом при вызове ф-ции указываешь параметры которые тебе нужны
     
    #6 forever21, 6 Nov 2012
    Last edited: 6 Nov 2012