Есть ли оператор целочисленного деления с округлением вверх? Чтобы было так:
1 / N = 1
2 / N = 1
...
N / N = 1
N + 1 / N = 2
N + 2 / N = 2
...
2N / N = 2
2N + 1 / N = 3
...
Или как это можно реализовать без использования математики, только на встроенных примитивах и целых типах данных?
UPD: встроенного нет, тогда можно ли упростить следующую функцию:
int div_up(int x, int y)
{
return x / y + (x%y ? 1 : 0);
}
Не знаю, на сколько это проще, но можно так
int div_up(int x, int y)
{
return (x + y - 1) / y;
}
Ну и подумать, что такое округление вверх для отрицательных чисел
Update
Чтобы избежать возможного переполнения, выражение можно переписать так
int div_up(int x, int y)
{
return (x - 1) / y + 1;
}
Можно использовать функцию ceil() из <math.h>.
Примеры можно посмотреть по ссылке: www.cplusplus.com
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости