вот пример это правильно. Введите количество дисков:
287
Минимальная цена за 287 дисков: 2641.00 рублей
Совет: выгоднее взять 2 ящика вместо 1 ящик, 11 коробок и 11 дисков поштучно
Цена с дополнительным ящиком: 2510.00 рублей (вместо 2641.00 рублей)
Вы сэкономите: 131.00 рублей

а это не правильно. Минимальная цена за 587 дисков: 5146.50 рублей
Совет: выгоднее взять 1 коробку вместо того, чтобы брать 0 коробок и 11 дисков поштучно
Цена с одной дополнительной коробкой: 5134.50 рублей (вместо 5146.50 рублей)
Вы сэкономите: 12.00 рублей


program Code_disk;
{$APPTYPE CONSOLE}
вот код

var
disk_count, boxes, small_boxes, individual_disks, remaining_disks: Integer;
final_price, alternative_price, saving: Real;

// Функция для склонения слов в зависимости от количества
function GetCorrectForm(count: Integer; form1, form2, form5: String): String;
begin
count := count mod 100;
if (count >= 11) and (count <= 19) then
GetCorrectForm := form5
else
case count mod 10 of
1: GetCorrectForm := form1;
2, 3, 4: GetCorrectForm := form2;
else
GetCorrectForm := form5;
end;
end;

begin
WriteLn('Введите количество дисков:');
ReadLn(disk_count);

if disk_count >= 0 then
begin
// Количество ящиков (по 144 диска)
boxes := disk_count div 144;
remaining_disks := disk_count mod 144;

// Количество коробок (по 12 дисков)
small_boxes := remaining_disks div 12;
// Количество оставшихся дисков поштучно
individual_disks := remaining_disks mod 12;

// Финальная цена
final_price := boxes * 1255 + small_boxes * 114.5 + individual_disks * 11.5;

// Вывод финальной цены с правильными формами слов
Writeln('Минимальная цена за ', disk_count, ' ',
GetCorrectForm(disk_count, 'диск', 'диска', 'дисков'), ': ',
final_price:0:2, ' рублей');

// Подсчёт стоимости, если взять дополнительный ящик
alternative_price := (boxes + 1) * 1255;
if (remaining_disks > 0) and (small_boxes * 114.5 + individual_disks * 11.5 > 1255) then
begin
saving := final_price - alternative_price;
WriteLn('Совет: выгоднее взять ', boxes + 1, ' ',
GetCorrectForm(boxes + 1, 'ящик', 'ящика', 'ящиков'),
' вместо ', boxes, ' ', GetCorrectForm(boxes, 'ящик', 'ящика', 'ящиков'),
', ', small_boxes, ' ', GetCorrectForm(small_boxes, 'коробку', 'коробки', 'коробок'),
' и ', individual_disks, ' ', GetCorrectForm(individual_disks, 'диск', 'диска', 'дисков'), ' поштучно');
WriteLn('Цена с дополнительным ящиком: ', alternative_price:0:2,
' рублей (вместо ', final_price:0:2, ' рублей)');
WriteLn('Вы сэкономите: ', saving:0:2, ' рублей');
end
// Подсчёт стоимости, если взять дополнительную коробку
else if (individual_disks > 0) and (individual_disks * 11.5 > 114.5) then
begin
alternative_price := boxes * 1255 + (small_boxes + 1) * 114.5;
saving := final_price - alternative_price;
WriteLn('Совет: выгоднее взять ', small_boxes + 1, ' ',
GetCorrectForm(small_boxes + 1, 'коробку', 'коробки', 'коробок'),
' вместо того, чтобы брать ', small_boxes, ' ',
GetCorrectForm(small_boxes, 'коробку', 'коробки', 'коробок'),
' и ', individual_disks, ' ', GetCorrectForm(individual_disks, 'диск', 'диска', 'дисков'), ' поштучно');
WriteLn('Цена с одной дополнительной коробкой: ', alternative_price:0:2,
' рублей (вместо ', final_price:0:2, ' рублей)');
WriteLn('Вы сэкономите: ', saving:0:2, ' рублей');
end;

end
else
begin
WriteLn('Количество дисков не может быть отрицательным');
end;

ReadLn;
end.
сделай так что бы он так же как и выше выводил совет про ящики коробки и диски корректно