Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/17: Рейтинг темы: голосов - 17, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 21.11.2009
Сообщений: 41
1

Необходимо разлить М литров жидкости в бутли ёмкостью a, b, c, и d литров

30.09.2010, 20:59. Показов 3517. Ответов 1
Метки нет (Все метки)

помогите пожалуйста доделать программку...
вот условие:
Необходимо разлить М литров жидкости в бутли ёмкостью a, b, c, и d литров таким образом, чтобы все использованные бутли были полными, а их количество -минимальным.
вот то что я решила
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
41
42
43
44
45
46
47
uses CRT;
var i,a,b,c,d,x,x1,y,y1,z,z1,w,w1,min,n,m:integer;
Begin
ClrScr;
repeat
 write('Vvedite 1 ob-em: ');readln(a);
 write('Vvedite 2 ob-em: ');readln(b);
 write('Vvedite 3 ob-em: ');readln(c);
 write('Vvedite 4 ob-em: ');readln(d);
 write('Vvedite obschii ob-em litrov: ');readln(m);
 write('Vvedite kol-vo rasmatriwaimjch variantow n=');
 readln(n);
randomize;
until (a>0)and(b>0)and(c>0)and(d>0)and(m>0)and
      (a<=m)and(b<=m)and(c<=m)and(d<=m);
    min:=10000;
 for i:=0 to n do
Begin
repeat
 x:=Random((m div a)+1); {kolichestwo butjlok }
 y:=Random((m div b)+1);
 z:=Random((m div c)+1);
 w:=Random((m div d)+1);
 until x*a+y*b+z*c+w*d=m;
    if x+y+z+w<min then
      Begin
        x1:=x;
        y1:=y;
        z1:=z;
        w1:=w;
        min:=x1+y1+z1+w1;
      end;
 
end;
writeln;
 
    writeln('Kol-vo bytilok ob-em a: ',x1);
 
    writeln('Kol-vo bytilok ob-em b: ',y1);
 
    writeln('Kol-vo bytilok ob-em c: ',z1);
 
    writeln('Kol-vo bytilok ob-em d: ',w1);
    writeln('min=',min);
 
 readln;
end.
только не могу сделать так, что бы когда к примеру вводишь количество объёмов 10,15,16,17 а общее количество которое нужно разлить 4, то должно выводить что "нельзя", так на полную некуда залить, но я не знаю как это правильно сделать.... может кто-нить знает как это правильно сделать?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.09.2010, 20:59
Ответы с готовыми решениями:

Требуется разлить М литров жидкости в бутыли емкостью P1 л, P2 л и P3 л
Помогите пожалуйста решить задачу... завтро зачет 13. Требуется разлить М литров жидкости в бутыли...

Метод Монте-Карло: разлить М литров жидкости в бутыли емкостью P1, P2 и P3 литров
Требуется разлить М литров жидкости в бутыли емкостью P1 л, P2 л и P3 л таким образом, чтобы все...

Разделить 12 литров воды поровну с помощью 2 пустых ведер с емкостью 8 и 5 литров
Имеется 12 литров воды,нужно разделить поровну с помощью 2 пустых ведер с емкостью 8 и 5 литров.

200 л бензина нужно разлить в баки емкостью 60, 45 и 25 литров. Получить все возможные варианты разлива. Подсчитать их количество
200 л бензина нужно разлить в баки емкостью 60, 45 и 25 литров. Получить все возможные варианты...

1
6 / 6 / 2
Регистрация: 15.04.2010
Сообщений: 151
01.10.2010, 01:53 2
вот накидал может подойдет
добавил метку
и сделал условие. если условие
выполняется программа переходит на 3 строску с конца и выводит 'нельзя' если не выполняется
делает то что написано Вами....
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
program www;
uses CRT;
var i,a,b,c,d,x,x1,y,y1,z,z1,w,w1,min,n,m:integer;
label metka;
Begin
ClrScr;
repeat
 write('Vvedite 1 ob-em: ');readln(a);
 write('Vvedite 2 ob-em: ');readln(b);
 write('Vvedite 3 ob-em: ');readln(c);
 write('Vvedite 4 ob-em: ');readln(d);
 write('Vvedite obschii ob-em litrov: ');readln(m);
 write('Vvedite kol-vo rasmatriwaimjch variantow n=');
 readln(n);
 if (a+b+c+d)<m
 then goto metka
else
begin
randomize;
until (a>0)and(b>0)and(c>0)and(d>0)and(m>0)and
      (a<=m)and(b<=m)and(c<=m)and(d<=m);
    min:=10000;
 for i:=0 to n do
Begin
repeat
 x:=Random((m div a)+1); {kolichestwo butjlok }
 y:=Random((m div b)+1);
 z:=Random((m div c)+1);
 w:=Random((m div d)+1);
 until x*a+y*b+z*c+w*d=m;
    if x+y+z+w<min then
      Begin
        x1:=x;
        y1:=y;
        z1:=z;
        w1:=w;
        min:=x1+y1+z1+w1;
      end;
 
end;
writeln;
 
    writeln('Kol-vo bytilok ob-em a: ',x1);
 
    writeln('Kol-vo bytilok ob-em b: ',y1);
 
    writeln('Kol-vo bytilok ob-em c: ',z1);
 
    writeln('Kol-vo bytilok ob-em d: ',w1);
    writeln('min=',min);
end;
        metka:
writeln('нельзя');
 readln;
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.10.2010, 01:53

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Сколько литров каждого сока надо взять, чтобы приготовить S литров коктейлей?
В кафе готовят коктейль из малинового и ананасового соков. Известно, что X литров малинового сока...

Cколько литров молока в месяц необходимо для зверофермы?
Вообщем. На звероферме разводят пушных зверьков.Имеются следующие: название,количество,возрасти...

Выяснить сколько литров молока в месяц необходимо для зверофермы
Помогите пожалуйста с решением задачи. На звероферме разводят пушных зверьков. Имеются следующие...

В посуде А (c) литров воды, в посуде В (х) литров воды. Из А сосуды вылили половину воды в сосуд В , потом из
В посуде А (c) литров воды, в посуде В (х) литров воды. Из А сосуды вылили половину воды в сосуд В...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.