Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 15.05.2015
Сообщений: 1

10 видов монет достоинством a1..a10

15.05.2015, 05:51. Показов 3285. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Даны натуральные числа, a1..a10. Предположим, что имеются 10 видов монет достоинством a1..a10. Обозначим через Bk-это число решения уравнений a1x1+..+a10x10=R, где Xi может принимать целые неотрицательные значения. Получить B1...B10... решение на паскаль
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.05.2015, 05:51
Ответы с готовыми решениями:

У покупателя есть n монет достоинством H(1),..., H(n). У продавца есть m монет достоинством B(1),...,B(m)
У покупателя есть n монет достоинством H(1),..., H(n). У продавца есть m монет достоинством B(1),...,B(m). Может ли купить покупатель вещь...

Определить сколько монет достоинством в 20 и 50 рублей и каковы их порядковые номера
В коллекции нумизмата не более чем 90 монет всех возможных достоинств.Определить сколько монет достоинством в 20 и 50 рублей и каковы их...

Как наименьшим количеством монет можно выплатить N копеек?Предполагается,что в достаточном количестве имеются монеты достоинством 1,2.3.5.10,15,20,50
Дано натуральное число N.Как наименьшим количеством монет можно выплатить N копеек?Предполагается,что в достаточном количестве имеются...

17
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
15.05.2015, 11:05
Лучший ответ Сообщение было отмечено rechehvt как решение

Решение

rechehvt, а задание точно корректно написано?
Цитата Сообщение от rechehvt Посмотреть сообщение
a1x1+..+a10x10=R
тут может равно k вместо R?

Добавлено через 37 минут
решал не я:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
label 1;
var
  a,b,c:array[1..10] of integer;
  i,j,n,s,k:integer;
begin
  write('R=');readln(k);
  write('a1,a2...a10=');
  for i:=1 to 10 do begin read(a[i]);b[i]:=k div a[i];end;
1:s:=0;
  for i:=1 to 10 do s:=s+a[i]*c[i];
  n:=n+ord(s=k);
  for i:=10 downto 1 do begin
    if c[i]=b[i] then for j:=i to 10 do c[j]:=0
  else begin c[i]:=c[i]+1;goto 1;end;
  end;
  writeln(n);
end.
1
0 / 0 / 0
Регистрация: 20.11.2017
Сообщений: 22
24.11.2017, 05:04
он ошибку выдает

Добавлено через 25 секунд
ошибку выдает
0
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,434
24.11.2017, 11:11
Никита4502, проверено в fpc в режиме совместимости. Нет никаких ошибок.
0
0 / 0 / 0
Регистрация: 20.11.2017
Сообщений: 22
25.11.2017, 13:07
ZX Spectrum-128, в Pascal ABC выдаёт ошибку в 11 строке "функция ORD с параметрами указанных типов не найдена".
0
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,434
25.11.2017, 16:53
Никита4502, раздел Турбо Паскаля!!!
А вы работаете в Pascal ABC!!!
0
0 / 0 / 0
Регистрация: 20.11.2017
Сообщений: 22
26.11.2017, 04:46
ZX Spectrum-128, а как тогда ее записать в паскале abc?
0
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,434
27.11.2017, 10:25
Никита4502, именно в pabc? В pabc.net работает.
0
0 / 0 / 0
Регистрация: 20.11.2017
Сообщений: 22
27.11.2017, 11:43
ZX Spectrum-128, мне в abc надо
0
Модератор
10358 / 5644 / 3396
Регистрация: 17.08.2012
Сообщений: 17,228
28.11.2017, 00:21
Никита4502, в Pascal ABC тип boolean порядковым не является. Замените
Pascal
11
  if s = k then inc(n);
0
0 / 0 / 0
Регистрация: 20.11.2017
Сообщений: 22
28.11.2017, 12:24
Cyborg Drone, goto 1; и label 1 можно убрать? зачем мне метка? что значит downto?

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
label 1;
var
  a,b,c:array[1..10] of integer;
  i,j,n,s,k:integer;
begin
  write('R=');
  readln(k);
  write('a1,a2...a10=');
  for i:=1 to 10 do begin read(a[i]);
  b[i]:=k div a[i];
  end;
1:s:=0;
  for i:=1 to 10 do s:=s+a[i]*c[i];
  if s = k then inc(n);
  for i:=10 downto 1 do begin
    if c[i]=b[i] then for j:=i to 10 do c[j]:=0
  else begin c[i]:=c[i]+1;
  goto 1;
  end;
  end;
  writeln(n);
end.
0
Модератор
10358 / 5644 / 3396
Регистрация: 17.08.2012
Сообщений: 17,228
28.11.2017, 15:02
goto и label убрать можно. Однако, замечу, что в данном случае применение goto оправдано. Без него, если не перерабатывать алгоритм, придётся вводить лишнюю переменную:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
var
  a, b, c: array[1..10] of integer;
  i, j, n, s, k: integer;
  q: boolean;
begin
  write('R = ');
  readln(k);
  write('a1 a2 ... a10 = ');
  for i := 1 to 10 do
    begin
      read(a[i]);
      b[i] := k div a[i];
    end;
  readln;
  repeat
    s := 0;
    for i := 1 to 10 do s := s + a[i] * c[i];
    if s = k then inc(n);
    for i := 10 downto 1 do
      begin
        q := c[i] = b[i];
        if q
          then for j := i to 10 do c[j] := 0
          else begin
            inc(c[i]);
            break
          end
      end
  until q;
  writeln(n);
  readln
end.
Что значит downto? Ну, во-первых, оно значит, что Вы не потрудились прочитать хотя бы 50 страниц любой книжки по любом паскалю. А вообще, for ... downto ... do - это предопределённый цикл с автодекрементом параметра цикла. Короче, если написано to, значит, к i прибавляется 1 на каждой итерации цикла, если написано downto, значит, от i вычитается 1 на каждой итерации цикла.
0
0 / 0 / 0
Регистрация: 20.11.2017
Сообщений: 22
29.11.2017, 04:49
Cyborg Drone, да мне до лампочки, лишь бы сдать, но спасибо.
0
0 / 0 / 0
Регистрация: 20.11.2017
Сообщений: 22
06.12.2017, 13:13
Cyborg Drone, простите меня пожалуйста, сидел разбирался с этой задачей и не до конца ее понял. Вы бы не могли бы поставить к ней комментарии? Или объясните мне с 15 по 29 строчку.
0
Модератор
10358 / 5644 / 3396
Регистрация: 17.08.2012
Сообщений: 17,228
06.12.2017, 17:30
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

С комментариями:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//a[i] - достоинство i-й монеты
//b[i] - максимальное количество монет достоинством a[i],
//       сумма которых не превышает заданную стоимость k
//с[i] - текущее количество каждой монеты
//i, j - счётчики
//n    - количество найденных наборов
//s    - текущая сумма
//k    - целевая сумма
//q    - факт того, что текущее количество монет текущего достоинства достигло максимума
var
  i, j, n, s, k: integer;
  q: boolean;
begin
  write('R = ');
  readln(k); //ввод целевой суммы
  write('a1 a2 ... a10 = ');
  for i := 1 to 10 do //цикл ввода достоинств монет
    begin
      read(a[i]); //ввод достоигства i-й монеты
      b[i] := k div a[i]; //расчёт максимального количества монет a[i], помещающихся в целевую сумму
    end;
  readln;
  repeat //цикл перебора вариантов выплаты
    s := 0; //текущая сумма пока равна 0
    for i := 1 to 10 do s := s + a[i] * c[i]; //цикл подсчёта текущей суммы: к сумме добавляются цены текущих количеств монет
    if s = k then inc(n); //если текущая сумма достигла целевой суммы, то инкрементируем количество найденных
    for i := 10 downto 1 do //цикл формирования наборов
      begin
        q := c[i] = b[i]; //факт достижения максимального значения текущего количества i-й монеты
        if q //если количество i-х монет максимально
          then for j := i to 10 do c[j] := 0 //то обнуляем текущие количества от i-й монеты до последней
          else begin //иначе (если не максимально)
            inc(c[i]); //инкрементируем количество i-й монеты
            break //и досрочно выходим из цикла формирования наборов
          end
      end
  until q; //если последняя монета включена в сумму максималльным количеством, прекращаем формировать наборы
  writeln(n); //печатаем количество наборов
  readln
end.
0
0 / 0 / 0
Регистрация: 20.11.2017
Сообщений: 22
23.12.2017, 11:48
Cyborg Drone, информатичка сказала, что 29 строчка неправильная, типо не бывает такого выражения. Что мне ей ответить на это? Программа то работает!
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
23.12.2017, 11:59
Цитата Сообщение от Никита4502 Посмотреть сообщение
29 строчка неправильная,
Строка 29
Pascal
1
begin
Что тут может не работать?
0
Модератор
10358 / 5644 / 3396
Регистрация: 17.08.2012
Сообщений: 17,228
25.12.2017, 23:00
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Pascal
29
  until q;
Эта? Скажите преподавателю, что q - это булева переменная, и выход из цикла происходит тогда, когда значение этой переменной есть истина, то есть, тогда, когда q=true. И ещё скажите, что программа прекрасно компилируется, никакой ошибки строка 29 не вызывает, следовательно, такое выражение бывает.

Просто преподаватель Ваш привык видеть после until логическое выражение, типа until a > b, а то, что логическая переменная тоже является логическим выражением, до её мозгов пока не дошло. Типа, until q - и всё? Караул! А с чем же q сравнивается? А q и не надо с чем-то сравниваться, так как оно и есть результат сравнения (строка 21).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.12.2017, 23:00
Помогаю со студенческими работами здесь

Определить число способов выплаты суммы n руб. с помощью монет достоинством 1, 2, 5 рублей
22. Дано натуральное число n(n<100). a) Определить число способов выплаты суммы n руб. с помощью монет достоинством 1,2,5 рублей и...

Найти минимальное число монет достоинством в 50, 10, 5, и 1 копейку, необходимое для представения некоторой суммы
Найти минимальное число монет достоинством в 50, 10, 5, и 1 копейку, необходимое для представения некоторой суммы, меньшей 1-го рубля. ...

Сколько существует способов набора одного рубля при помощи монет достоинством 50коп., 20коп., 5коп. и 2коп
Составить алгоритм, определяющий, сколько существует способов набора одного рубля при помощи монет достоинством 50коп., 20коп., 5коп. и...

Определить количество способов оплаты N рублей с помощью монет достоинством 1, 2, 5, 10 рублей
Дано натуральное число N (N<100). Определить количество способов оплаты N рублей с помощью монет достоинством 1, 2, 5, 10 рублей....

У покупателя есть n монет достоинством H(1)...H(n)
У покупателя есть n монет достоинством H(1)...H(n). У продавца есть m монет достоинством B(1)...B(l). Может ли купить покупатель вещь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru