#include <iostream>
using namespace std;
// -----------------------------------------------------------------------------
// Write a function which will round a given integer to the next largest
// multiple of some other "base" integer. For example, given a value of 5 and
// a base of 4, the function should return 8.
// -----------------------------------------------------------------------------
int RoundToLargerMultiple(int nInteger, int nBase)
{
if (nBase == 0 || nInteger == 0)
{
cout << 0 << endl;
return 0;
}
bool nNegative = nInteger >= 0 ? false : true;
bool bNegative = nBase >= 0 ? false : true;
int n = 0;
if (nNegative)
{
int remainder = nInteger % nBase;
nInteger *= -1;
n = nInteger / nBase;
if (bNegative)
{
n *= -1;
if (remainder != 0)
++n;
n *= nBase;
}
else
n *= -nBase;
}
else
{
int remainder = nInteger % nBase;
n = nInteger / nBase;
if (remainder > 0 && !bNegative)
++n;
n *= nBase;
}
cout << n << endl;
return n;
}
int main() {
RoundToLargerMultiple(5, 4);
RoundToLargerMultiple(-5, 4);
RoundToLargerMultiple(5, -4);
RoundToLargerMultiple(-5, -4);
RoundToLargerMultiple(14, 5);
RoundToLargerMultiple(-14, 5);
RoundToLargerMultiple(14, -5);
RoundToLargerMultiple(-14, -5);
RoundToLargerMultiple(3, 3);
RoundToLargerMultiple(-3, 3);
RoundToLargerMultiple(3, -3);
RoundToLargerMultiple(-3, -3);
RoundToLargerMultiple(0, 5);
RoundToLargerMultiple(5, 0);
RoundToLargerMultiple(0, 0);
return 0;
}
留言