Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №1935217
А
Аноним
20 октября 2024 12:02 · публичный вопрос
А
Аноним

Написать программу на Паскале ABC, которая введёт с клавиатуры список названий учебных предметов. Случайным образом сгенерировать количество человек, которые будут сдавать ЦТ по этому предмету. Построить круговую диаграмму по полученным данным.

Нейросеть20 октября 2024 12:02

Для решения данной задачи на Паскале ABC, мы можем создать программу, которая будет выполнять следующее:

  1. Запрашивать у пользователя список названий учебных предметов.
  2. Генерировать случайное количество человек для каждого из предметов, которые будут сдавать ЦТ.
  3. Строить круговую диаграмму на основе полученных данных.

Вот пример кода, который демонстрирует, как это можно реализовать:

program SubjectsStatistics;

uses crt, Graph, SysUtils;

var
  subjects: array of string; // Массив для хранения названий предметов
  counts: array of integer;   // Массив для хранения количества человек
  i, numSubjects, totalCount: integer;

begin
  // Ввод названий предметов
  writeln('Введите количество учебных предметов:');
  readln(numSubjects);
  SetLength(subjects, numSubjects);
  SetLength(counts, numSubjects);

  for i := 0 to numSubjects - 1 do
  begin
    write('Введите название предмета ', i + 1, ': ');
    readln(subjects[i]);
    // Генерация случайного количества человек от 1 до 100
    counts[i] := Random(100) + 1;
  end;

  // Инициализация графики
  InitGraph(0, 0, 'C:\Turbopas\BGI'); // Проверьте путь к BGI для вашей системы
  totalCount := 0;

  // Подсчет общего количества человек
  for i := 0 to numSubjects - 1 do
    totalCount := totalCount + counts[i];
  
  // Построение круговой диаграммы
  var angle: real := 0; // Начальный угол
  for i := 0 to numSubjects - 1 do
  begin
    SetFillStyle(i + 1, i + 1); // Установка цвета для каждого сектора
    pieslice(300, 300, Round(angle), Round(angle + (counts[i] / totalCount) * 360), 100);
    angle := angle + (counts[i] / totalCount) * 360; // Увеличение угла для следующего сектора
  end;

  // Подпись каждого сектора
  angle := 0;
  for i := 0 to numSubjects - 1 do
  begin
    outtextxy(300 + Round(120 * cos(angle + (counts[i] / totalCount) * 180)), 
                 300 + Round(120 * sin(angle + (counts[i] / totalCount) * 180)), 
                 subjects[i]);
    angle := angle + (counts[i] / totalCount) * 360; // Увеличение угла
  end;

  readln; // Ожидание нажатия клавиши
  CloseGraph; // Закрытие графического окна
end.

Обратите внимание на следующие моменты:

  • Убедитесь, что у вас установлены необходимые библиотеки для работы с графикой (BGI).
  • Для корректного отображения круговой диаграммы необходимо настроить путь к BGI в функции InitGraph.
  • В данном примере количество людей генерируется в диапазоне от 1 до 100, вы можете изменить этот диапазон по своему усмотрению.

Эта программа запросит у пользователя названия предметов, произвольно сгенерирует количество сдающих ЦТ и отобразит круговую диаграмму с соответствующими секторами. Удачи в ваших учебных начинаниях!

написать программу на Паскале ABC, которая введёт с клавиатуры список названий учебных предметов. Случайным образом сгенерировать количество человек, которые будут сдавать ЦТ по этому предмету. Построить круговую диаграмму по полученным данным.
Для решения данной задачи на Паскале ABC, мы можем создать программу, которая будет выполнять следующее: 1. Запрашивать у пользователя список названий учебных предметов. 2. Генерировать случайное количество человек для каждого из предметов, которые будут сдавать ЦТ. 3. Строить круговую диаграмму на основе полученных данных. Вот пример кода, который демонстрирует, как это можно реализовать: ```pascal program SubjectsStatistics; uses crt, Graph, SysUtils; var subjects: array of string; // Массив для хранения названий предметов counts: array of integer; // Массив для хранения количества человек i, numSubjects, totalCount: integer; begin // Ввод названий предметов writeln('Введите количество учебных предметов:'); readln(numSubjects); SetLength(subjects, numSubjects); SetLength(counts, numSubjects); for i := 0 to numSubjects - 1 do begin write('Введите название предмета ', i + 1, ': '); readln(subjects[i]); // Генерация случайного количества человек от 1 до 100 counts[i] := Random(100) + 1; end; // Инициализация графики InitGraph(0, 0, 'C:\Turbopas\BGI'); // Проверьте путь к BGI для вашей системы totalCount := 0; // Подсчет общего количества человек for i := 0 to numSubjects - 1 do totalCount := totalCount + counts[i]; // Построение круговой диаграммы var angle: real := 0; // Начальный угол for i := 0 to numSubjects - 1 do begin SetFillStyle(i + 1, i + 1); // Установка цвета для каждого сектора pieslice(300, 300, Round(angle), Round(angle + (counts[i] / totalCount) * 360), 100); angle := angle + (counts[i] / totalCount) * 360; // Увеличение угла для следующего сектора end; // Подпись каждого сектора angle := 0; for i := 0 to numSubjects - 1 do begin outtextxy(300 + Round(120 * cos(angle + (counts[i] / totalCount) * 180)), 300 + Round(120 * sin(angle + (counts[i] / totalCount) * 180)), subjects[i]); angle := angle + (counts[i] / totalCount) * 360; // Увеличение угла end; readln; // Ожидание нажатия клавиши CloseGraph; // Закрытие графического окна end. ``` **Обратите внимание на следующие моменты:** - Убедитесь, что у вас установлены необходимые библиотеки для работы с графикой (BGI). - Для корректного отображения круговой диаграммы необходимо настроить путь к BGI в функции `InitGraph`. - В данном примере количество людей генерируется в диапазоне от 1 до 100, вы можете изменить этот диапазон по своему усмотрению. Эта программа запросит у пользователя названия предметов, произвольно сгенерирует количество сдающих ЦТ и отобразит круговую диаграмму с соответствующими секторами. Удачи в ваших учебных начинаниях!