Умножение через сложение

Я хочу создать функцию, которая находит произведение двух целых чисел, используя сложение, которое может обрабатывать как негативы, так и позитивы.

Это код, который я до сих пор …
получаю сумасшедшие цифры как результат .. я нуб .. спасибо

double multi(double n1, n2)
{

double answer(0), i=0;

do
{
answer += n1; i++;
} while (i < n2);

return answer;
}

-2

Решение

Вы можете начать с использования целых чисел вместо двойных и фактически передать их оба в качестве параметров ….

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,

Если это все еще не помогает, тогда я предлагаю вам сесть и немного подумать об этом.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]