Пусть имеется 10 гирь весом а1,а2,...,а10.Обозначим через Ск число способов,которыми можно составить вес к, то есть Ск-это число решений уравнения а1х1+а2х2+...+а10х10=к,где Хi может принимать значения 0 или 1 (i=1,...,10).Получите с1,с2,...,с10. Помогите написать пожалуйста))))
Lapp
4.12.2009 0:26
При чем тут массивы???
Прочти Правила и измени название на ИНФОРМАТИВНОЕ. Иначе закрою.
Добавлено через 12 мин. Кошмар. Нет слов. ладно, вижу, что ошибка была не в названии, а в генокоде. Изменяю название сам. Все-таки прочти Правила, а?..
Zigfried
4.12.2009 0:41
ладно ступил Главное помогите))
Lapp
4.12.2009 0:50
Цитата(Zigfried @ 3.12.2009 20:41)
Главное помогите))
А сам начинал делать? Если да - покажи, что написал. Даже если мало и неправильно.
Zigfried
4.12.2009 0:59
начинал но всё что накатал у меня на компе в универе. Как я понял тут точно нужен массив из весов гирь больше ничего я непонимаю как это делать полностью. Особенно мне итрересно как тут можно перебирать все варианты корней уравнения(т.к. они зависят от того какой будет хi).
Lapp
4.12.2009 1:14
Цитата(Zigfried @ 3.12.2009 20:59)
Особенно мне итрересно как тут можно перебирать все варианты корней уравнения(т.к. они зависят от того какой будет хi).
Проще всего тут это делать рекурсией. Вы ее проходили? Вообще, процедуры проходили?
Zigfried
4.12.2009 1:17
нет я на 1 курсе учусь мы проходим массивы так что надо как то с их помощью решить...
Lapp
4.12.2009 1:56
Цитата(Zigfried @ 3.12.2009 21:17)
нет я на 1 курсе учусь мы проходим массивы так что надо как то с их помощью решить...
БЕЗ помощи массивов никто ничего делать не будет, это само собой. Я тебя спрашиваю что ЕЩЕ можно использовать.
Можешь просто ответить, процедуры проходили? Ответь ДА или НЕТ, плз.
Zigfried
4.12.2009 1:58
нет процедуры не проходили
Lapp
4.12.2009 2:00
Цитата(Zigfried @ 3.12.2009 21:58)
нет процедуры нельзя
Ну а циклы? можно?
Я бы очень хотел посмотреть на твои попытки, которые у тебя в универе..
Zigfried
4.12.2009 2:04
циклы можно разумеется оператором case можно пользоваться если он тут нужен но единственное нельзя через go to решать препод тогда пристрелит на месте)
Lapp
4.12.2009 3:59
Цитата(Zigfried @ 3.12.2009 22:04)
циклы можно разумеется
Хорошо, пусть будет с циклами. Вот тебе решение (см. ниже), но в нем я специально испортил кое-что - одно выражение заменил на другое (кстати, замена получилась значимая). Сумеешь исправить - хорошо, нет - приходи, попробуем разобраться..
Цитата
но единственное нельзя через go to решать препод тогда пристрелит на месте)
За кого ты меня принимаешь?? я еще подойду и контрольный в голову сделаю..
begin Write('Available weights are: '); for i:=1 to n do if w[i]>0 then Write(w[i],' '); Write('Type in the weight to meet: '); for i:=1 to n+1 do c[i]:=0; ReadLn(w0);
for i:=1 to n+1 do c[i]:=0; repeat Inc(c[1]); for i:=1 to n do if c[i]=2 then begin c[i]:=0; Inc(c[i+1]) end; s:=0; for i:=1 to n do s:=s+c[i]*w[i]; if s=w0 then begin for i:=1 to n do if (c[i]>0)and(w[i]>0) then Write(w[i],' '); WriteLn end until false; ReadLn end.
Успехов!
Zigfried
5.12.2009 1:24
Спасибо за помощь всё испарвил и с успехом сдал задачу)))))))))
Lapp
5.12.2009 1:39
Цитата(Zigfried @ 4.12.2009 21:24)
Спасибо за помощь всё испарвил и с успехом сдал задачу)))))))))
Пожалуйста! Если тебя не затруднит, скажи, пожалуйста, тут, в теме, что нужно исправить и как, чтобы программа была правильной. Для потомков )).
Zigfried
6.12.2009 20:23
Я исправил until c[i]=10, и поставил ещё 1 условие if w[i]>0 then перед for i:=1 to n do s:=s+c[i]*w[i]; ну и по мелочи вес гирь с константы на ввод исправил)))
Lapp
6.12.2009 23:47
Цитата(Zigfried @ 6.12.2009 16:23)
Я исправил until c[i]=10,
Нет, не так . Слушай внимательно: в этот момент у тебя переменая i вообще не определена! Никогда не надейся на то, что по выходе из цикла она будет равна максимальному значению. Всегда используй переменные, которые САМ определяешь. Дальше - откуда взялась 10 ?? Это что ли n? Ну так так и пиши тогда. И последнее: я сделал, как ты написал - не-а, не пашет! Но место правильное, да. Еще одна попытка..? Можешь задавать вопросы (кроме "что там написать" ).
Цитата
и поставил ещё 1 условие if w[i]>0 then перед for i:=1 to n do s:=s+c[i]*w[i];
А разве вес гири может быть отрицательным? Извини, но я рассчитывал на нашу старую добрую Вселенную с нашей старой доброй физикой..
Zigfried
7.12.2009 0:21
Нет просто там при вводе нужно учесть всё и если пользователь ошибётся и введёт отрицательный вес гири он должен его отбросить а то там если ввести относительно небольшой вес он можен лишнего понабрать))))))))) ну а по поводу until... хм... над подумать...
Lapp
7.12.2009 2:07
Цитата(Zigfried @ 6.12.2009 20:21)
Нет просто там при вводе нужно учесть всё и если пользователь ошибётся и введёт отрицательный вес гири он должен его отбросить
Просто нужно добавить проверку при вводе и заставлять перевводить, если отрицательное. Игнорировать отрицательные значения - это как-то странно выглядит.. Типа не ставить заплатки на штаны, а каждому встречному говорить: "здесь у меня дырка, вы туда не смотрите"
Вячеслав Л.
7.12.2009 17:01
Извиняюсь, за встревание, но мне нужна аналогичная проверка. Вот так возможно это сделать?:
... repeat writeln('vvedite neotrizatelnoe 4islo'); readln(i); until i>=0; ...
Или, предполагалось как-то по другому?
Цитата
Типа не ставить заплатки на штаны, а каждому встречному говорить: "здесь у меня дырка, вы туда не смотрите"
Lapp
7.12.2009 23:20
Цитата(Вячеслав Людской @ 7.12.2009 13:01)
так возможно это сделать?:
... repeat writeln('vvedite neotrizatelnoe 4islo'); readln(i); until i>=0; ...
Или, предполагалось как-то по другому?
Конечно. Можно еще добавить что-то типа вывода "недопустимое число; повторите ввод:".
А по-другому - это только если отказываться от ReadLn и делать посимвольный ввод. Тут это абсолютно лишнее.
Вячеслав Л.
8.12.2009 17:54
Цитата
А по-другому - это только если отказываться от ReadLn и делать посимвольный ввод.
Покажите, пожалуйста, как это делается (просто на будущее).
Lapp
8.12.2009 22:11
Цитата(Вячеслав Людской @ 8.12.2009 13:54)
Покажите, пожалуйста, как это делается (просто на будущее).
Не в этой теме.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.