SirykValia
11.03.2022 05:45

Уровень C. Напишите программу, которая вычисляет произведение двух введённых целых чисел, не используя операцию произведения.
Пример:

Введите числа:
3 2
Произведение: 6

Введите числа:
-3 2
Произведение: -6

Введите числа:
3 -2
Произведение: -6

Введите числа:
-3 -2
Произведение: 6
Уровень C. Для начала нужно вспомнить, чем можно заменить произведение .
Основная сложность этой программы будет заключена не в вычислении значения произведения, а определении его знака, поскольку к целым числам относятся и положительные, и отрицательные числа.
Необходимо описать несколько переменных целочисленного типа, в которых нужно будет хранить следующие величины:
• Два введенных целых числа;
• Конечное количество повторений, которое должно совпадать с абсолютным значением второго числа, т.е. с его модулем
• Значение суммы;
• Количество текущих сложений
Затем вводим с клавиатуры два числа (с команды read) и сохраняем в другую переменную абсолютное значение второго числа.
После этого запускаем цикл, в теле которого мы будем увеличивать значение переменной с количеством текущих сложений на 1, а значение сумы увеличиваем на первое число. Условием выхода из цикла будет равенство количества текущих повторений и конечного количества повторений.
После завершения цикла с условного оператора необходимо проверить знак второго числа. Если второе число отрицательное, то выводим суммы со знаком «-»

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
dolloc
16.05.2021 16:32
Из-за дурацкого сбоя этого сервиса при сохранении ответа пропал получасовой набор формул в модераторов удалить этот ответ.

P.S. Набираешь ответ - как по минному полю идешь. При нажатии "сохранить" неизвестно что произойти может. Например, при случайном нажатии "сохранить ответ" (каждый может ошибиться) нет анализа, того, что в поле набора данных не пусто и весь этот набор формул мгновенно "улетает в никуда".
Я уж не говорю о постоянных "Вы были отключены от сервера".

И еще. Поскольку автор вопроса не виноват, даю два "голых" (без формул) решения.

1. Рекурсивная программа (как не надо решать подобные задачи)

{ рекурcивная программа }
function prod(a,b:integer):real;
var
  i:integer;
  p:real;
begin
  p:=1;
  for i:=a to b do p:=p*i;
  prod:=p
end;

function pow2(n:integer):integer;
var
  i,p:integer;
begin
  p:=1;
  for i:=1 to n do p:=p*2;
  pow2:=p
end;

function an(n:integer):real;
begin
  if n=1 then an:=0.5
  else an:=an(n-1)*n/prod(pow2(n-1)+1,pow2(n))
end;

var
  s:real;
  i,n:integer;
begin
  Write('n='); Read(n);
  s:=0;
  for i:=1 to n do s:=s+an(i);
  Writeln(s)
end.

Пример:
n=4
0.58348214285829

2. А вот рекуррентная, которую можно написать, если немного подумать.

{ рекуррентная программа }
var
  a,p,s:real;
  i,j,n,lo,hi:integer;
begin
  Write('n='); Read(n);
  a:=0.5; s:=a; lo:=1; hi:=2;
  for i:=2 to n do begin
    p:=1; lo:=hi+1; hi:=hi*2;
    for j:=lo to hi do p:=p*j;
    a:=a*i/p;
    s:=s+a
    end;
  Writeln(s)
end.

Пример
n=4
0.58348214285829
0,0(0 оценок)
Ответ:
eromadima
25.10.2020 14:45
begin
  var n:=readInteger('Число элементов массива-');
  var a:=ArrRandom(n,-50,50); a.Println;
  for var i:=1 to n-2 do a[i]:=2*(i+1);
  a.Println
end.

Пример
Число элементов массива- 10
-40 4 -49 0 -47 41 49 33 -31 -1
-40 4 6 8 10 12 14 16 18 -1

begin
  var n:=readInteger('Число элементов массива-');
  var a:=ArrRandom(n,-50,50); a.Println;
  var i1:=a.IndexMax;
  var i2:=a.IndexMin;
  Writeln(a[min(i1,i2)+1:max(i1,i2)].Where(x->x<0).Sum)
end.

Пример
Число элементов массива- 18
-45 -30 -49 -44 34 -5 -12 -28 22 14 -39 -20 -46 50 6 21 20 -47
-194

begin
  var a:=ReadlnString('Введите строку;').ToCharArray;
  // было сделано так только ради получения массива символов,
  // который на самом деле только мешает
  Writeln(a);
  if Pos('...',a.JoinIntoString)>0 then
    Writeln('Троеточие в массиве есть')
  else Writeln('Троеточия в массиве нет')
end.

Пример
Введите строку; 6ye$% DFDRT..drrtert...DFDGD
[6,y,e,$,%, ,D,F,D,R,T,.,.,d,r,r,t,e,r,t,.,.,.,D,F,D,G,D]
Троеточие в массиве есть
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота