Напишите программу, которая получает два целых числа и находит их произведение, не используя операцию умножения. Учтите, что числа могут быть отрицательными.
Пример:
Введите два числа:
10 -15
10*(-15)=-150
Это цикл с условием ( while)
ПАСКАЛЬ
Помогите пожалуйста
Заранее спасибо
Ответы на вопрос
Произведение можно найти повторным сложением. Если второе число положительное, первое число прибавляется нужное количество раз. Если второе число отрицательное, первое число вычитается, а счётчик постепенно увеличивается до нуля.
pascalprogram ProductWithoutMultiplication;var a, b: integer; originalA, originalB: integer; product: integer;
begin write('Введите два числа: '); readln(a, b);
{ Сохраняем исходные числа для вывода } originalA := a; originalB := b;
product := 0;
if b > 0 then begin while b > 0 do begin product := product + a; b := b - 1; end; end else begin while b < 0 do begin product := product - a; b := b + 1; end; end;
writeln(originalA, '*(', originalB, ')=', product); end.
Например, при вводе:
10 -15
цикл выполнится 15 раз. На каждом шаге из результата будет вычитаться число 10:
0 - 10 - 10 - 10 ... = -150
Результат:
10*(-15)=-150
Программа правильно работает со всеми сочетаниями знаков:
10 и 15 → 150 10 и -15 → -150 -10 и 15 → -150 -10 и -15 → 150
Если одно из чисел равно нулю, цикл не выполнится и результат останется равным нулю.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili

