zadach421.PAS

{* Задача 421 *}

Unit ZADACH421;
Interface
Implementation
Begin
 writeln('. Заданы пять значений количества заболевших свиным гриппом в классе за пять лет. Например: 12 (1990), 30 (1991), 11 (1992), 21 (1993), 4 (1994). С помощью Bard3D постройте диаграмму отражающую динамику (в высоте столбца) заболеваемости. Под каждым столбцом укажите год. Исходные данные вводятся с клавиатуры.');
End.

Program zadach421;
Uses crt, Graph; {Подключаем модули crt, graph}
Const {* Предопределенные *}
  TotDiagram = 5; {Объявляем константу: количество годов для запросов}
Var {* Объявление переменных *}
  Gd     : Integer;
  Gm     : Integer; {Переменные для графического режима }
  Y1     : Integer;
  Y2     : Integer;
  X1     : Integer;
  X2     : Integer; {Координаты для графиков}
  dx     : Integer; {Интервал для одного графика}
  dx2    : Integer; {Половина интервала для определения центра}
  i      : Integer; {Счетчик для циклов}
  k      : Integer; {если высота графика будет больше чем видимая область, то будем делить на это число}
  MaxEl  : Integer; {Максимальное значение графика}
  StrGod : String;
  StrPok : String{переменные для преобразования числа в строку}
  InArr  : Array [1..5, 1..2] Of Integer; {Массив для хранения результатов запросов}
  {Начало основоной программы}
Begin
  clrscr; {Очищаем экран}
  MaxEl := 0; {Обнуляем максимальный элемент}
  {Цикл для ввода исходных значений в массив}
  For i := 1 To TotDiagram Do {* Увеличиваем i от 1 до TotDiagram с шагом 1 *}
  Begin
    запрос входных параметров}
    write('Введите значение ', i, ' года: ');
    readln(InArr[i, 1]);
    write('Введите количество заболевших в ', InArr[i, 1], ' году: ');
    readln(InArr[i, 2]);
    If MaxElGetMaxY - 50 Do
    Begin
      k := k * 10;
      MaxEl := MaxEl Div 10;
    End;
    For i := 1 To TotDiagram Do {* Цикл для i => [1 .. TotDiagram] *}
    Begin
      dx2 := dx Div 2; {находим середину для i-го графика}
      {Определяем левые верхние координаты, уменшая координату y на k}
      x1 := (dx * i) - (dx2 + (dx2 Div 2));
      y1 := ((GetMaxY - 50) - (inArr[i, 2] Div k)); {Определяем правые нижние координаты}
      x2 := (dx * i) - (dx2 - (dx2 Div 2));
      y2 := GetMaxY - 50; {Строим графики при помощи Bard3D}
      Bar3D(x1, y1, x2, y2, 10, TopOn); {Переводим числа в строку для отображения на графике}
      str(InArr[i, 1], StrGod);
      str(InArr[i, 2], StrPok); {Выводим подписи для всех графиков}
      OutTextXY(x1 + 40, GetMaxY - 30, StrGod);
      OutTextXY(x1 + 40, y1 - 20, StrPok);
    End;
    
  End;
  clrscr; {Очищаем экран}
  writeln('Для продолжения нажмите ENTER...');
  Readln; {* Ждем подтверждения пользователя *}
  CloseGraph; {Закрываем графический режим}
End.