Загрузка данных


program PieChart;
uses GraphABC;

var 
  a: array[1..10] of integer;
  i, n, s, u0, u1: integer;

begin
  // 1. Ввод исходных данных в консоли
  write('Количество n = ');
  readln(n);
  writeln(n); // Вывод в консоль для наглядности
  
  writeln('Элементы массива: ');
  for var i := 1 to n do
  begin
    read(a[i]);
    write(a[i], ' ');
  end;
  writeln;

  // 2. Подсчет суммы всех элементов для вычисления долей
  s := 0;
  for var i := 1 to n do
    s := s + a[i];

  // Исходный угол (начало отрисовки первого сектора)
  u0 := 0; 

  // Настройка окна под вывод графики
  ClearWindow;
  
  // Вывод текстовой информации в графическом окне (как на фото)
  TextOut(10, 10, 'Количество n = ' + IntToStr(n));
  TextOut(10, 30, 'Элементы массива:');
  var elementsStr := '';
  for var i := 1 to n do
    elementsStr := elementsStr + IntToStr(a[i]) + ' ';
  TextOut(10, 50, elementsStr);

  // 3. Цикл отрисовки секторов диаграммы
  for var i := 1 to n do
  begin
    // Вычисление конечного угла для текущего сектора
    // u1 = u0 + доля_элемента * 360 градусов
    u1 := u0 + Round(a[i] * 360 / s);
    
    // Установка случайного цвета кисти для закраски сектора
    SetBrushColor(RGBRandom);
    
    // Рисование сектора (центр в точке 300, 200, радиус 100)
    Pie(300, 200, 100, u0, u1);
    
    // Следующий сектор начинается там, где закончился текущий
    u0 := u1;
  end;
end.