Необходимо разлить М литров жидкости в бутли ёмкостью a, b, c, и d литров - Turbo Pascal
Формулировка задачи:
помогите пожалуйста доделать программку...
вот условие:
Необходимо разлить М литров жидкости в бутли ёмкостью a, b, c, и d литров таким образом, чтобы все использованные бутли были полными, а их количество -минимальным.
вот то что я решила
только не могу сделать так, что бы когда к примеру вводишь количество объёмов 10,15,16,17 а общее количество которое нужно разлить 4, то должно выводить что "нельзя", так на полную некуда залить, но я не знаю как это правильно сделать.... может кто-нить знает как это правильно сделать?
Решение задачи: «Необходимо разлить М литров жидкости в бутли ёмкостью a, b, c, и d литров»
textual
Листинг программы
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.