Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2018, 11:22   #1
yura4044
Новичок
Джуниор
 
Регистрация: 08.03.2018
Сообщений: 2
По умолчанию Расставить между цифрами знаки арифметических операций

Паскаль АВС. Для заданного набора целых чисел без знака расставить между ними знаки сложения, вычитания, умножения и целого деления так, чтобы результат полученного арифметического выражения был равен заданному числу. Вывести все возможные варианты и подсчитать их.
yura4044 вне форума Ответить с цитированием
Старый 08.03.2018, 12:22   #2
yura4044
Новичок
Джуниор
 
Регистрация: 08.03.2018
Сообщений: 2
По умолчанию

Для 2 операций (сложение и вычитание) ещё можно похожее найти, а для 4 никак не получается.
Var n , i , j : longint;
a : array[1..25] of integer;
res , s : integer;
found : boolean;

Function getBit(i , j : longint) : longint;
Begin
if (i and (1 shl j)) <> 0 then
getBit := 1
else
getBit := 0;
End;

Begin
Read(s);
n:=10;
for i := 1 to n do
a[i]:=i;
for i := 0 to (1 shl (n - 1)) - 1 do begin
res := a[1];
for j := 0 to n - 2 do
if getBit(i , j) = 0 then
res := res + a[2 + j]
else
res := res - a[2 + j];
if res = s then begin
Write(a[1]);
for j := 0 to n - 2 do
if getBit(i , j) = 0 then
Write('+' , a[2 + j])
else
Write('-' , a[2 + j]);
found := true;
WriteLn('=' , s);
break;
end;
end;
if not found then
WriteLn('No solution');
End.
yura4044 вне форума Ответить с цитированием
Старый 08.03.2018, 13:39   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если добавить умножение и деление, то сложность решения на порядок возрастет, поскольку еще приоритеты операций всплывут. И если не можешь просто со сложением и вычитанием, то прямая дорога в раздел Фриланс, может кто и сделает за вознаграждение ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.03.2018, 00:59   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

готовое решение подобной задачи есть в теме Арифметические действия с цифрами числа
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расставить между ними знаки + и - так, чтобы значение получившегося выражения было равно заданному целому S apethegod Помощь студентам 1 23.12.2017 13:20
Калькулятор логических/арифметических операций doojkee Общие вопросы C/C++ 6 08.04.2012 19:28
тяжелая, но интересная задача: Дано 3 числа. Между ними можно ставить знаки операций: сложения, вычитания, умножения, деления ВДПУ Помощь студентам 2 25.02.2012 19:59
программа проверяющую знания арифметических операций Demon_en Помощь студентам 4 07.11.2011 07:35
Деление без арифметических операций imera Общие вопросы C/C++ 2 14.11.2008 03:02