Вы почти вычислите остаток в результат , в то время как деление составляет почти в i
Правильный путьдля положительных значений может быть:
#include <iostream>
using namespace std;
int main()
{
int lhs, rhs;
if (!(cin >> lhs >> rhs))
cerr << "invalid inputs" << endl;
else if (rhs == 0)
cerr << "divide by 0";
else {
int result = 0;
while (lhs >= rhs) {
lhs -= rhs;
result += 1;
}
cout << "div = " << result << " (remainder = " << lhs << ')' << endl;
}
}
Компиляция и выполнение:
/tmp % g++ -pedantic -Wall -Wextra d.cc
/tmp % ./a.out
11 5
div = 2 (remainder = 1)
/tmp % ./a.out
3 3
div = 1 (remainder = 0)
/tmp % ./a.out
2 3
div = 0 (remainder = 2)