0 / 0 / 0
Регистрация: 26.04.2017
Сообщений: 10
|
||||||
1 | ||||||
Найти значения переменных, которые будут соответствовать условиям26.04.2017, 15:54. Показов 3344. Ответов 27
Метки нет (Все метки)
безуспешно пробую решить простую задачу:
целые переменные s = 1 to 7, a = 1 to 5, b = 1 to 9 Нужно найти значения переменных, которые будут соответствовать условиям a < s b < s s = a + b последний код
s = 2 a = 1 b = 1 s = 3 a = 1 b = 2 a =2 b = 1 и т.д. Пожалуйста подтолкните в нужном направлении Спасибо
0
|
26.04.2017, 15:54 | |
Ответы с готовыми решениями:
27
Укажите значения, которые будут содержаться в переменных после выполнения следующих программных фрагментов Как найти нужные значения из ячеек, которые содержат разные данные, по нескольким условиям найти значения переменных Х, У которые минимизируют функцию f(x,y) = -x-5y Сколько существует различных наборов значений переменных, которые удовлетворяют условиям? |
12 / 12 / 2
Регистрация: 24.02.2013
Сообщений: 41
|
||||||
26.04.2017, 17:40 | 2 | |||||
1
|
0 / 0 / 0
Регистрация: 26.04.2017
Сообщений: 10
|
|
26.04.2017, 21:27 [ТС] | 3 |
У Вас получилось очень элегантное решение. И какое-то очень короткое. Это просто здорово.
К сожалению при описании задачи я обнаружил, что это решение является частным решением одного полинома. Могу ли я обратиться к Вам за помощью в описании этого полинома? Огромное спасибо за помощь.
0
|
12 / 12 / 2
Регистрация: 24.02.2013
Сообщений: 41
|
|
26.04.2017, 22:47 | 4 |
Условия задачи?
0
|
0 / 0 / 0
Регистрация: 26.04.2017
Сообщений: 10
|
|
27.04.2017, 00:09 [ТС] | 5 |
Полином, который у меня получился имеет общий вид
s*(n-1)= a(1) + a(2) + ....+ a(n) где s должна быть большего любого из членов полинома (а) и сумма членов полинома должна равнятся s умноженной на количество членов полинома (n) минус 1 Конкретная задача для 3 и четырёх членов для 3-х s*2 = a1 +a2 +a3 где а1 а2 < s а3 для 4-х членов s*3 = a1 + a2 +a3 +a4 Такое впечатление что Вы предвидели решение и зделали только два цикла. И у меня пока не получается экстраполировать Ваше решение на четрёх членный (неоднозначное слово) полином.
0
|
12 / 12 / 2
Регистрация: 24.02.2013
Сообщений: 41
|
|||||||||||
27.04.2017, 05:14 | 6 | ||||||||||
Частные решения
Для трёхчлена:
0
|
117 / 110 / 31
Регистрация: 05.04.2014
Сообщений: 224
|
|||||||||||
27.04.2017, 08:48 | 7 | ||||||||||
Мне кажется, условие неправильное:
И по условию вроде не (a < 3 * (a + b + c + d)) должно быть, а (a < (a + b + c + d)) , то есть число меньше S, без умножения на N-1И при выводе результатов, сумму не нужно на 3 умножать, выводить только S.
0
|
12 / 12 / 2
Регистрация: 24.02.2013
Сообщений: 41
|
|
27.04.2017, 09:19 | 8 |
Да, я слегка не прав, действительно во всех случаях достаточно только одной проверки на не превышение Sn, остальные всегда true при числах больше нуля
0
|
117 / 110 / 31
Регистрация: 05.04.2014
Сообщений: 224
|
|||||||||||
27.04.2017, 11:08 | 9 | ||||||||||
В твоем примере решения нет, потому что изначально s должно быть больше любого из чисел, а у тебя d>s
Универсальное решение для любого массива (на форме ListBox1 и Button1), может не оптимальное, но работает:
Немного ошибся... 10-я строка должна выглядеть так:
0
|
12 / 12 / 2
Регистрация: 24.02.2013
Сообщений: 41
|
|
27.04.2017, 11:11 | 10 |
Вообще-то Smax>=n*(n-1) для существования решений, где n кол-во членов, а в первоначальном условии стояло Smax=7
0
|
117 / 110 / 31
Регистрация: 05.04.2014
Сообщений: 224
|
|
27.04.2017, 11:26 | 11 |
Согласен.
И мое решение, кстати, не совсем корректно работает, нашел ошибку
0
|
12 / 12 / 2
Регистрация: 24.02.2013
Сообщений: 41
|
||||||
27.04.2017, 13:39 | 12 | |||||
Что-то не работает. При A() As Integer = {5, 9, 7} и Smax As Integer = 7 пишет, что решений нет, хотя S = 6, А0=1, А1=1, А2=1
Добавлено через 3 минуты Тут похоже для универсализма в сторону рекурсии смотреть надо... Добавлено через 2 часа 6 минут Надумал оригинальное решение
0
|
117 / 110 / 31
Регистрация: 05.04.2014
Сообщений: 224
|
||||||
27.04.2017, 15:36 | 13 | |||||
Еще один вариант решения, немного через ж.., но вроде работает правильно.
Сначала формируется матрица со всеми возможными комбинациями, затем анализируется матрица по строкам, суммируя столбцы, как то так. Например при условии А = {3,2} будет сформирован массив В={{1,1}, {1,2}, {2,1}, {2,2}, {3,1}, {3,2}}, каждый элемент которого будет проверяться на условие s*(n-1)=(sum(B(...)) Кликните здесь для просмотра всего текста
Добавлено через 9 минут Должно же быть s*2=a1+a2+a3. При твоих заданных параметрах решение будет например s=3, a1=2, a2=2, a3=2
0
|
0 / 0 / 0
Регистрация: 26.04.2017
Сообщений: 10
|
|
27.04.2017, 18:21 [ТС] | 14 |
Я прошу прощения что вмешиваюсь в Вашу дискуссию, но дело в том что этот "полином" или многочлен существует именно в том виде в каком я его описал
s*(n - 1) = a(1) + a(2) + a(3) + .. +a(n) где s - точная сумма элементов полинома в количестве n а(1), а(2) и тд - елементы (члены) заданнх областей Сам полином был получен практическим путём. Пример конкретной задачи s - измняется в диапозоне от 0 до 36 A - изменяется в диапозоне от 0 до 27 B - изменяется в диапозоне от 0 до 27 C - изменяется в диапозоне от 0 до 27 D - изменяется в диапозоне от 0 до 27 это значения,которые могут принимать члены полинома A, B, C, D не могут превышать значение s для конкретного решения я выбираю часть диапозона и ищу в выбранном диапозоне решение на соответствие этим услоиям s*3 = A + B + C + D И естественно это положительные целые числа. предположим я выбрал след диапозоны s = 11 to 23 A = 12 to 16 B = 8 to 21 C = 15 to 24 D = 7 to 17 Из этих значений нужно выделить те, которые соответствуют указанным условиям Ещё раз приношу свои извинения за вмешательство в дискуссию И огромное спасибо за Ваш инерес к проблеме Добавлено через 34 минуты Если позволите несколько замечаний. MickeS Вы действительно , во всяком случае на мой взгляд, очень элегантно расписали задачу УНИЧТОЖИВ одну переменную. Но Вы уничтожили как раз s. А с этой переменной, мне кажется, должны начинаться вычесления, потому что от неё как бы зависят остальные. Но именно поэтому Вы от неё и ибавились!!!!????? По поводу матриц, как бы некоторые неудобства. Матрицы очень жёсткие конструкции и в них сложнее делать настройку. Например из приведённого примера я искал следующий результат s = 23 A = 16 B = 19 C = 17 D = 17 А верхнюю границу для А явыбрал 14 Изменяя границы выбранных диапозонов можно исследовать диапозон. Предположим добавить по единичке сверху или раздвинуть на единичку в низ любой из диапозонов. Для матрицы это будет чуть чуть грамоздко.
0
|
12 / 12 / 2
Регистрация: 24.02.2013
Сообщений: 41
|
||||||
27.04.2017, 18:47 | 15 | |||||
Ну, кажется итоговая прога для полинома с четырмя членами
А зачем там переменная S? Она вычисляется по формуле (a + b + c + d) / 3, а да s-целое. Мы просто перебираем ВСЕ возможные варианты и оставляем только те, которые попадают в указанные диапазоны. Тупо, в лоб, однако чёто лучше в голову не идёт. Интересная задачка, однако! Если не секрет - из какой проблемы такое вылезло? Добавлено через 4 минуты Вернее в общем случае S=(A0+A1+...+An)/(n-1), причём S-целое
0
|
0 / 0 / 0
Регистрация: 26.04.2017
Сообщений: 10
|
|
27.04.2017, 20:06 [ТС] | 16 |
пробую прогнать прогу даёт ошибку
Severity Code Description Project File Line Suppression State Error BC30451 'ListBox1' is not declared. It may be inaccessible due to its protection level. SOLUTION C:\Users\Dmitri\Desktop\start\SOLUTION\SOLUTION\Module1.vb 25 Active Severity Code Description Project File Line Suppression State Error BC30451 'ListBox1' is not declared. It may be inaccessible due to its protection level. SOLUTION C:\Users\Dmitri\Desktop\start\SOLUTION\SOLUTION\Module1.vb 31 Active На счёт переменной s. Умножать легче чем делить. И при умножении всегда будет целое число, чего не будет при делении. По сути это как бы фильтр. В общем виде это выглядит так. Есть четыре НЕЗАВИСИМЫХ множества которые составляют одно событие. Пересечение этих множеств есть истинное значение этого события. У этого полинома или многочлена нет имени если хотите смело назовите его своим именем. Я не против. Добавлено через 3 минуты System.NullReferenceException occurred HResult=0x80004003 Message=Object variable or With block variable not set. Source=Microsoft.VisualBasic StackTrace: at Microsoft.VisualBasic.CompilerServices.Symbols.Container..ctor(Object Instance) at Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack) at SOLUTION.Module1.Main() in C:\Users\Dmitri\Desktop\start\SOLUTION\SOLUTION\Module1.vb:line 26 Что-то не так Добавлено через 18 минут прога выдала неправильный результат s = 14 a = 12 b = 8 c = 15 d = 7 и зависла
0
|
12 / 12 / 2
Регистрация: 24.02.2013
Сообщений: 41
|
|||||||||||||||||||||
27.04.2017, 20:24 | 17 | ||||||||||||||||||||
Сообщение было отмечено tutodin как решение
Решение
Если у Вас консольное приложение, то вместо
И почему не правильный? 12+8+15+7=42, 42/3=14 Всё верно.
1
|
117 / 110 / 31
Регистрация: 05.04.2014
Сообщений: 224
|
||||||
27.04.2017, 20:37 | 18 | |||||
Если не нравится предложенное мной решение с дополнительным массивом, то только через рекурсию. И не факт, что получится правильный результат.
Ниже универсальное решение для любой размерности. В первую строку задавайте нижние границы, во вторую - верхние. Smin и Smax - соответственно минимальное и максимальное значение S. Здесь для твоего примера s = 11 to 23 A = 12 to 16 B = 8 to 21 C = 15 to 24 D = 7 to 17 Выдает 1093 результата.
Не верно. сумма (S = 14) меньше одного из элементов (С = 15).
1
|
0 / 0 / 0
Регистрация: 26.04.2017
Сообщений: 10
|
|
27.04.2017, 20:39 [ТС] | 19 |
в полученном ответе с 15 а s 14
0
|
12 / 12 / 2
Регистрация: 24.02.2013
Сообщений: 41
|
|||||||||||
27.04.2017, 20:56 | 20 | ||||||||||
Вы правы, этот момент я пропустил...
Строки
2
|
27.04.2017, 20:56 | |
27.04.2017, 20:56 | |
Помогаю со студенческими работами здесь
20
Сколько существует разных наборов значений логических переменных, которые удовлетворяют всем перечисленным ниже условиям Какими будут значения переменных a и b после выполнения операторов Определить, какими будут значения переменных p и d после выполнения операторов Определите, какими будут значения переменных p и d после выполнения операторов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |