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.
привет можешь дописать программу что бы он корекктно выводил совет о выгоде если значение дисков выше там больше 500 или больше 1000 что бы он выводил корекктное сообщение о например вот такой если я напишу значение 143 то мне предложит совет тако1 выгодно взять один ящик 0 коробок 0 дисков вместо 143 дисков