Я хочу создать функцию, которая находит произведение двух целых чисел, используя сложение, которое может обрабатывать как негативы, так и позитивы.
Это код, который я до сих пор …
получаю сумасшедшие цифры как результат .. я нуб .. спасибо
double multi(double n1, n2)
{
double answer(0), i=0;
do
{
answer += n1; i++;
} while (i < n2);
return answer;
}
Вы можете начать с использования целых чисел вместо двойных и фактически передать их оба в качестве параметров ….
int multi( int x, int y )
{
int answer = 0;
// stuff goes here...
return answer;
}
Я подозреваю, что это домашнее задание, поэтому я не собираюсь давать вам дословный код …
Но учтите, что если одно значение является отрицательным, результат будет отрицательным по отношению к ответу, если это же значение было положительным. Эффективно, если вы собираетесь добавить x
и сделай это y
раз, тогда вы можете перевернуть знак обоих x
а также y
если y
отрицательно. Это отрицает ответ и дает вам положительный y
зациклить.
Оптимизация состояла бы в том, чтобы проверить, какое из двух значений больше, и использовать меньшее в качестве переменной цикла.
..да, это hmwk .. но извините, я не понимаю, что вы имеете в виду ..
Представьте, что у вас есть два целых числа X
а также Y
, Если Y
положительно, это легко увидеть:
X * Y = (X + X + X + X + ...)
Теперь, что если Y
отрицательно? Я собираюсь использовать -Y
обозначить это:
X * -Y = -(X * Y)
= -(X + X + X + X + ...)
= (-X - X - X - X - ...)
= ((-X) + (-X) + (-X) + (-X) + ...)
Так что если Y
положительно я добавляю вместе Y
копии X
, Если Y
отрицательно я складываю -Y
копии -X
,
Если это все еще не помогает, тогда я предлагаю вам сесть и немного подумать об этом.
Других решений пока нет …