Вообще программа странно написана.
Я так понимаю это Турбо Паскаль, так как в нем обязательно нужно указать значение переменной перед тем как использовать ее в циклах. Поэтому b и c присвоили 0. (В PascalABC нулю присваивать не обязательно)
d = 1000, потому что максимальный вес, который может вместить в себя пакет равен 1кг. Так как фрукты в граммах, то d присваиваем не 1, а 1000.
Я бы написал программу так:
program ll1;
var sum, a, vf: integer;
pr_rub, pr_kop: real;
begin
readln(a); //цена фруктов за кг в руб
max_v:=1000; //максимально возможный вес в гр.
sum:=0; //изначальный вес пакета
while sum<=max_v do
begin
readln(vf); //вводим вес фруктов
if vf > 150 then
while vf > 150 do
begin
writeln('a<=150');
readln(vf);
end; //по условию, вес фрукта не должен превышать 150гр
sum:=sum+vf; //находим общий вес фруктов
end;
pr_rub:= (sum * a) / max_v; //находим цену в рублях
pr_kop:= pr_rub * 100; //переводим рубли в копейки
writeln('Price RUB: ', pr_rub:4:0);
writeln('Price KOP: ', pr_kop:4:0);
readln();
end.
// PascalABC.NET
begin
var (n, x) := ReadInteger2('Введите N и X:');
var a := ArrGen(n, x, p -> p + 1);
for var i := 0 to a.High do
$'A[{i+1}]={a[i]}'.Println
end.