Здравствуйте! Извините уж за совсем нубский вопрос, но не могли бы вы мне подсказать алгоритм сравнения 4 чисел. Т.е. нужно найти 2 точки на координатной прямой, одно из которых будет минимальным, другое максимальным. Сравнение каждого отдельно - очень долгий и громоздкий процесс, может есть другие способы? Спасибо за внимание.
пусть числа a b c d, найдем максимальный Code: если (a>b)&(a>c)&(a>d) то а, иначе если (b>c)&(b>d) то b, иначе если (c>d) то с иначе d. далее исключаем максимальное число из первоначального набора и аналогично ищем минимальное из трех оставшихся.
Может я неправильно понял суть вопроса, но почему бы не отсортировать числа по неубыванию? //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; }
// 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; } а потом при вызове ф-ции указываешь параметры которые тебе нужны