mirror of
https://github.com/TheAlgorithms/C
synced 2025-05-14 07:58:04 +03:00
47 lines
784 B
C
47 lines
784 B
C
int divide(int dividend, int divisor)
|
|
{
|
|
int sign = 1;
|
|
long int output = 0;
|
|
if (dividend < 0)
|
|
{
|
|
sign *= -1;
|
|
}
|
|
else
|
|
{
|
|
dividend *= -1;
|
|
}
|
|
if (divisor < 0)
|
|
{
|
|
sign *= -1;
|
|
}
|
|
else
|
|
{
|
|
divisor *= -1;
|
|
}
|
|
while (dividend <= divisor)
|
|
{
|
|
long int tmp = 0;
|
|
long int div = divisor;
|
|
while (dividend <= div)
|
|
{
|
|
tmp += (tmp + 1);
|
|
dividend -= div;
|
|
div += div;
|
|
}
|
|
if (output >= INT_MAX)
|
|
{
|
|
if (sign == -1)
|
|
{
|
|
return INT_MIN;
|
|
}
|
|
else
|
|
{
|
|
return INT_MAX;
|
|
}
|
|
}
|
|
output += tmp;
|
|
}
|
|
|
|
return output * sign;
|
|
}
|