Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2011, 23:44   #1
FlyOrDie
 
Регистрация: 25.03.2011
Сообщений: 3
По умолчанию Программа для решения старинной задачи . Циклы.

Доброго времени суток! Совсем зелёный новичёк в программировании . Необходимо написать программку для решения старинной задачи. Собственно условие:

Жил был старик купец и было у него 3 сына, соответственно, Старший, Средний и младший. И решил разделить наследство следующим образом:

1)Старшему дать больше всего вина, меньше всего золота и средненько коней.
2)Среднему дать больше всего коней, но меньше всего вина и средненько золота.
3)Младшему дать больше всего золота, но меньше всего коней и средненько винца

Старшему сыну - 19 лет, младшему 13, а среднему столько, сколько было у него винища =) Так же известно, что каждый получил суммарно столько единиц, сколько , ему лет.

Числа не могут повторяться. То есть, если у кого-то из братьев получилось 3 единицы золота, то эти 3 единицы, ни одного из видом эммм... продукции не может быть ни у кого больше. То есть цифра вычёркивается.


Нужно вычислить сколько кому досталось и сколько лет среднему братцу.

Вот что я накатал =)
Код:
procedure TForm1.Button1Click(Sender: TObject);

var
a1: integer;
a2: integer;
a3: integer;
b1: integer;
b2: integer;
b3: integer;
c1: integer;
c2: integer;
c3: integer;
x: integer;

begin

a1:=0;
a2:=0;
a3:=0;
b1:=0;
b2:=0;
b3:=0;
c1:=0;
c2:=0;
c3:=0;
x:=14;

repeat
a1:=a1+1;
a2:=a2+1;
a3:=a3+1;
b1:=b1+1;
b2:=b2+1;
b3:=b3+1;
c1:=c1+1;
c2:=c2+1;
c3:=c3+1;
x:=x+1;

until

(a1<a2) and (a1<a3) and (a1<a3) and

(b1<b2) and (b1<b3) and (b2<b3) and

(c1<c2) and (c1<c3) and (c2<c3) and

(c3+b1+c2=x) and (a1+b2+c3=13) and (a2+b3+c1=19) and

(x<19) and (x>13) and (a1<>a2<>a3<>b1<>b2<>b3<>c1<>c2<>c3);


Label1.Caption := '        Золото  Вино   Кони' + #13
                  + 'Старший  ' + IntToStr(a1) + '    ' + IntToStr(a3) + '      ' + IntToStr(a2) +  #13
                  + 'Средний  ' + IntToStr(b2) + '    ' + IntToStr(b1) + '      ' + IntToStr(b3) + ' =' + IntToStr(x) + #13
                  + 'Младший  ' + IntToStr(c3) + '    ' + IntToStr(c2) + '      ' + IntToStr(c1) + #13
end;
end.

В общем плюёт мне ошибку на (a1<>a2<>a3<>b1<>b2<>b3<>c1<>c2<>c3 ) Incompatible Types. Ну блин, в конце концов не прописывать же неравенства в скобочках по одному?! Все неравенства для а1, потом для а2 и т.д...
Если убрать это условие, то всё компилируется, а вот после запуска окно виснет и всё Я так полагаю, что я совсем неправильно сделал цикл=( Но я честно говоря не знаю, как лучше, посоветуйте пожалуйста =)

Заранее спасибо, Андрей
FlyOrDie вне форума Ответить с цитированием
Старый 26.03.2011, 12:19   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

(a1<>a2) and (a1<>a3) and ... and (a1<>c3) and (a2<>a3) .. and (a2<>c3) ...
и много много других
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 26.03.2011, 13:56   #3
FlyOrDie
 
Регистрация: 25.03.2011
Сообщений: 3
По умолчанию

Прописал я всё это добро, программа запустилась, появилось окошечко формы с кнопкой Button1. Ткнул. No emotions. Мало того, окошко ещё и зависло. Помогите найти косяк пожалуйста =)
FlyOrDie вне форума Ответить с цитированием
Старый 26.03.2011, 17:35   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Код:
repeat
a1:=a1+1;
a2:=a2+1;
a3:=a3+1;
b1:=b1+1;
b2:=b2+1;
b3:=b3+1;
c1:=c1+1;
c2:=c2+1;
c3:=c3+1;
x:=x+1;

until
проверяемые по вашему циклу ситуации
(a1 a2 a3 b1 b2 b3 c1 c2 c3)
1 1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3 3
и т. д.
ни одна из этих комбинаций заведомо не проходит
в результате поскольку нет других ограничений (например типа а1<19) получаем "бесконечный" цикл.
Цитата:
Мало того, окошко ещё и зависло
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 26.03.2011 в 17:39.
evg_m вне форума Ответить с цитированием
Старый 26.03.2011, 23:29   #5
FlyOrDie
 
Регистрация: 25.03.2011
Сообщений: 3
По умолчанию

в таком случае если мы ограничим все переменные, допустим, до 19 то этот цикл будет повторяться до этого предела и цикл так и не закончится правильным ответом?
FlyOrDie вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
НАписать программу для решения задачи mckent Общие вопросы C/C++ 4 05.02.2011 19:16
Дайте направление для решения задачи Акоб Общие вопросы C/C++ 2 10.01.2011 10:30
Программа для решения ур-ия ax+b=0 Crish Паскаль, Turbo Pascal, PascalABC.NET 4 13.09.2009 00:42
Звуковая студия для решения конкретной задачи Ivan_32 Софт 1 29.08.2009 23:26