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

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

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

> Блок-схема
Guest
сообщение 3.09.2005 20:00
Сообщение #1


Гость






Привет всем.

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

Любую сумму денег больше 7 рублей можно разменять на 3 и 5 рублей
Разменяйте N рублей всевозможными способами.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 6)
Guest
сообщение 4.09.2005 13:06
Сообщение #2


Гость






Помогите тогда решить задачу. :molitva:
 К началу страницы 
+ Ответить 
Malice
сообщение 4.09.2005 16:16
Сообщение #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 
 К началу страницы 
+ Ответить 
Guest
сообщение 4.09.2005 18:46
Сообщение #4


Гость






Malice

Спасибо
 К началу страницы 
+ Ответить 
klem4
сообщение 4.09.2005 21:15
Сообщение #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 
 К началу страницы 
+ Ответить 
Malice
сообщение 4.09.2005 22:50
Сообщение #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 
 К началу страницы 
+ Ответить 
hiv
сообщение 5.09.2005 8:59
Сообщение #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

 

- Текстовая версия 25.07.2025 11:56
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"