Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 12.05.2011, 22:39   #1 (permalink)
dima-baris
Новичок
 
Регистрация: 12.05.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Задача на Паскале

зарание спасибо большое!!
Задача: сколько можно купить быков,коров, телят, платя за быка 10 руб.,за корову 5 руб., а за телёнка 0.5 руб, если на 100 рублей надо купить сто голов скота.

её надо решить через цикл repeat!!
dima-baris вне форума   Ответить с цитированием

Старый 12.05.2011, 22:39
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Возможно такое, что проблема уже решена в одной из аналогичных тем

Задача на массивы в Паскале
Задача на Паскале и С++
Задача на Паскале
Задача на Паскале
Задача на Паскале...

Старый 12.05.2011, 23:29   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от dima-baris Посмотреть сообщение
зарание спасибо большое!!
Задача: сколько можно купить быков,коров, телят, платя за быка 10 руб.,за корову 5 руб., а за телёнка 0.5 руб, если на 100 рублей надо купить сто голов скота.

её надо решить через цикл repeat!!
Прежде всего, давайте решим задачу безо всякого Паскаля. Обозначим:
1. Ox - искомое число быков,
2. Cow - искомое число коров,
3. Calf - искомое число телят.
Имеем систему уравнений:
10*Ox+5*Cow+0.5*Calf=100
Ox+Cow+Calf=100
Чтобы работать исключительно с целыми числами, умножим обе части первого уравнения на 2:
20*Ox+10*Cow+Calf=200
Исключив телят, получим:
Cow=(100-19*Ox)/9
Вот это Диофантово уравнение (это когда решениями являются только целые числа) и надо решить. Легко убедиться, что единственная подходящая комбинация есть Ox=1 и Cow=9. Отсюда получаем Calf=90. Эти три числа удовлетворяют обоим уравнениям системы.
А теперь - программа, реализующая этот алгоритм:
Код:
var
 Ox,Cow,Calf:Byte;
 b:boolean;
BEGIN
 Ox:=0;
 b:=true;
 Repeat
  Repeat
   Inc(Ox);
  Until (((100-19*Ox) mod 9)=0) or (Ox=5);
  If ((100-19*Ox) mod 9)=0 then
   begin
    Cow:=(100-19*Ox) div 9;
    Calf:=100-(Ox+Cow);
    If (Ox*20+Cow*10+Calf)=200 then
     begin
      b:=false;
      Writeln('  Ox - ',Ox);
      Writeln(' Cow - ',Cow);
      Writeln('Calf - ',Calf);
     end;
   end;
 Until Ox=5;
 If b then WriteLn('The problem is unsolvable!');
 readln;
END.
Vladimir_S вне форума   Ответить с цитированием
Старый 12.05.2011, 23:45   #3 (permalink)
dima-baris
Новичок
 
Регистрация: 12.05.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

спасибо большое ещё раз!!!
dima-baris вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 06:07.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.