Вычитаем первое число из второго.
Если результат отрицательный, то первое меньше второго.
Если нулевой, то они равны.
Если положительный, то первое больше второго.
Найдем разность между первым и вторым значением: c=a-b
Все что нам требуется сделать, это выяснить, является ли с положительным числом.
Например, используя функцию сигнум, можно получить вариант функции Хевисайда, которая будет принимать значение 1 только для положительных значений, а во всех остальных случаях обращаться в ноль. f(c)=[(sgn(c)+1/)2]
В нашем случае можно записать, что max(a,b)=a*f(c)+b*f(-c)
Так мы можем сравнить два числа, не прибегая к логическому сравнению.
Конечно, данный алгоритм реализуем при условии наличия встроенной функции сигнум (она присутствует даже в старом Бейсике ). Но даже если такой встроенной функции нет, ее написание не составит большого труда.
using namespace std;
/* Язык С++.
* Запрашиваем у пользователя неопределенное количество целых чисел
* пока не введёт значение = 0
* посчитать количество элементов введенных пользователем кратных 5,
* а также вывести номер первого элемента, введенного пользователем значения = 5.
* Ноль не учитывается (если 5 нет, то номер = 0)
* Использовать do, while
*/
int main()
{
int n, c5 = 0, i = 1, i5 = 0;
bool found5 = false;
do {
cout << "Число: ";
cin >> n;
if (n == 0) break;
else if (n % 5 == 0) {
c5++;
if (i5 == 0) {
i5 = i;
}
}
i++;
} while (true);
cout << "Количество чисел, кратных 5: " << c5 << endl;
cout << "Номер первого элемента, кратного 5: " << i5 << endl;
return 0;
}