IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Блок-схема
сообщение
Сообщение #1


Гость






Привет всем.

Задали нарисовать блок-схему по задаче, задача такая

Любую сумму денег больше 7 рублей можно разменять на 3 и 5 рублей
Разменяйте N рублей всевозможными способами.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Помогите тогда решить задачу. :molitva:
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Если тебе нужны ВСЕ способы размена, то делай полный перебор, так проще, т.е:
 for n5:=0 to (Сумма div 5) do
for n3:=0 to (Сумма div 3) do
if (n5*5+n3*3)=сумма then writeln (......);
:yes:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Malice

Спасибо
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Мне кажется перебор это очень долго .... у меня вот есть другая мысль, работает вроде правильно, только запарка с числом 9 smile.gif ну этот случай можно и отдельно рассмотреть. А так в случае с перебором, это в любом случае

(n div 3 +1)*(n div 5 + 1) операций, тоесть в случае например с n=1000 это будет 334*201 = 67134 blink.gif

в моем случае n div 5 -> 200 smile.gif Если я не прав или ошибаюсь, извиняюсь.



uses crt;

var
n, c5 : integer;

Begin

clrscr;

write('n='); readln(n);

c5 := 0;

while(n>0) do begin
dec(n, 5);
inc(c5);
if n mod 3 = 0 then
writeln('5*', c5, ' + 3*', n div 3);
end;
readln;

end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(klem4 @ 4.09.05 22:15)
Мне кажется перебор это очень долго ....
(n div 3 +1)*(n div 5 + 1) операций, тоесть в случае например с n=1000 это будет 334*201 = 67134  blink.gif


во 1-х, я сказал как проще smile.gif Во 2-х, в смысле долго ? Дольше секунды ? Кстати, кроме 9-ки, она еще и не все варианты ищет, да еще и -1 иногда получается smile.gif Поставь inc и Dec после If и все будет хорошо. :yes:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Можно и одним циклом в тупом переборе обойтись:
var n5,n :integer;
begin
n:=111;
for n5:=0 to (n div 5) do
if ((n-n5*5) mod 3)=0 then
writeln(n:0,'=',n5:0,'*5p+',((n-n5*5) div 3):0,'*3p');
end.
Работает железно! smile.gif


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.12.2024 20:51
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name