Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 07.06.2010, 22:26   #1 (permalink)
darkdragon
Member
 
Регистрация: 08.04.2010
Сообщений: 38
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите, PASCAL.

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

З.Ы Модерам пожалуйства извините за повтор темы!
darkdragon вне форума   Ответить с цитированием

Старый 07.06.2010, 22:26
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

В этом деле главное не торопится, а по лучше ознакомится с проблемой

Помогите написать программу на PASCAL
Помогите решить задачки в Pascal
Помогите в написании программы в Pascal
Помогите найти ошибку, Pascal abc

Старый 07.06.2010, 23:16   #2 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

А повтор темы чем-то оправдан?

Для вывода такой диаграммы придется воспользоваться модулем Graph - откройте справку, там все должно быть расписано. Ширину столбика определяете как ширину экрана, разделенную на количество групп (для красоты и читаемости надо будет учесть отступы). Больше помочь ничем не могу, не знаком с этим модулем
MrSTEP вне форума   Ответить с цитированием
Старый 08.06.2010, 10:47   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ладно, сделаю, ждите.
Vladimir_S вне форума   Ответить с цитированием
Старый 08.06.2010, 12:03   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ну вот:
Код:
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( ){Здесь Вам нужно задать параметры процедуры самостоятельно, под Ваш компьютер};
 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.jpg
Vladimir_S вне форума   Ответить с цитированием
Старый 08.06.2010, 16:35   #5 (permalink)
darkdragon
Member
 
Регистрация: 08.04.2010
Сообщений: 38
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо огромное !!!!!вы немножко больше поработали я программу саму написал давно она легкая а вот с диаграммой никак было!Который раз выручаете ..Спасибо не дадите пропасть!!))))
darkdragon вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 08.06.2010, 20:31   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Сейчас пришло в голову - наверное, есть неточность. В условии сказано, что 100% соответствует средний балл 5.0. Но что соответствует 0%? Я считал, что 0.0, а вероятно правильнее считать 2.0. Сможете сами исправить?
P.S. На всякий случай - в таком варианте следует 6-ю снизу строку заменить на
Код:
BarHight:=ROUND(400/3*(Mmed[i]-2));
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 10:22.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.