• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите, PASCAL.

darkdragon

Новые
Регистрация
8 Апр 2010
Сообщения
38
Реакции
0
Баллы
0
Помогите, PASCAL.

Срочно помогите сделать столбиковую диаграмму до среды...практику надо здать!
В программе вводится количество групп ,имя группы,кол-во 5,4,3,2 и считается средний балл!
диаграмма должна отражать процент качества в группах (5,0 это 100%) и размер стобиков должен быть разный(т.е если два столбика то они широкие, а если 10 поменьше чтобы входили на ось Х).Очень надеюсь на помощь!

З.Ы Модерам пожалуйства извините за повтор темы!
 
А повтор темы чем-то оправдан?

Для вывода такой диаграммы придется воспользоваться модулем Graph - откройте справку, там все должно быть расписано. Ширину столбика определяете как ширину экрана, разделенную на количество групп (для красоты и читаемости надо будет учесть отступы). Больше помочь ничем не могу, не знаком с этим модулем
 
Ладно, сделаю, ждите.
 
Ну вот:
Код:
Uses Graph, CRT;
Type Group=Record
            Name:String;
            Marks:ARRAY[2..5] of Byte;
           End;
var
 Gr:Array[1..25] of Group;
 Mmed:Array[1..25] of Real;
 N:Byte;
 S:String;
 i,j:Integer;
 Sum1,Sum2:Real;
 Width, BarWidth, BarHight,X:WORD;
begin
 Write('Enter number of groups (<26) ');
 ReadLn(N);
 For i:=1 to N do
  With Gr[i] do
   begin
    WriteLn('Group name (max 8 symbols; only Latin letters and figures!):');
    ReadLn(Name);
    For j:=2 to 5 do
     begin
      Write('Number of "',j,'" marks ');
      ReadLn(Marks[j]);
     end;
    WriteLn;
   end;
 For i:=1 to N do
  begin
   Sum1:=0;
   Sum2:=0;
   With Gr[i] do
    For j:=2 to 5 do
     begin
      Sum1:=Sum1+Marks[j]*j;
      Sum2:=Sum2+Marks[j];
     end;
   Mmed[i]:=Sum1/Sum2;
  end;

 InitGraph( ){[COLOR=Red]Здесь Вам нужно задать параметры процедуры самостоятельно, под Ваш компьютер[/COLOR]};
 ClearDevice;
 SetColor(Cyan);
 SetLineStyle(SolidLn,0,ThickWidth);
 Rectangle(30, 10, 640, 410);
 SetLineStyle(SolidLn,0,NormWidth);
 SetTextStyle(DefaultFont, HorizDir,1);
 SetTextJustify(RightText, CenterText);
 OutTextXY(26, 10, '100');
 OutTextXY(26, 410, '0');
 For i:=1 to 9 do
  begin
   Str(i*10,S);
   OutTextXY(26, 410-i*40, S);
   Line(30,410-i*40,640,410-i*40);
  end;
 Width:=600 div N;
 BarWidth:=Width-10;
 SetTextStyle(DefaultFont, VertDir,1);
 SetTextJustify(CenterText, TopText);
 For i:=1 to N do
  begin
   OutTextXY(30+(i-1)*Width+10+(BarWidth div 2), 414, Gr[i].Name);
   Line(30+(i-1)*Width+10+(BarWidth div 2), 410,
                 30+(i-1)*Width+10+(BarWidth div 2), 10);
  end;
 SetFillStyle(SolidFill,Red);
 For i:=1 to N do
  begin
   X:=30+(i-1)*Width+10+(BarWidth div 2);
   BarHight:=ROUND(400/5*Mmed[i]);
   Bar(X-(BarWidth div 2),409, X+(BarWidth div 2), 411-BarHight);
  end;
 ReadKey;
 CloseGraph;
end.
В итоге должно получиться нечто в таком роде:
Diag.webp
 
Спасибо огромное !!!!!вы немножко больше поработали я программу саму написал давно она легкая а вот с диаграммой никак было!Который раз выручаете ..Спасибо не дадите пропасть!!))))
 
Сейчас пришло в голову - наверное, есть неточность. В условии сказано, что 100% соответствует средний балл 5.0. Но что соответствует 0%? Я считал, что 0.0, а вероятно правильнее считать 2.0. Сможете сами исправить?
P.S. На всякий случай - в таком варианте следует 6-ю снизу строку заменить на
Код:
BarHight:=ROUND(400/3*(Mmed[i]-2));
 
Назад
Сверху