Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц, летом дешевле!

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2010, 09:25   #1
Lexia_nick_otin
 
Регистрация: 05.10.2009
Сообщений: 6
По умолчанию Написать программу, которая выводит на экран две секторные диаграммы

Написать программу, которая выводит на экран две секторные диаграммы(построение оформить в виде процедуры, параметры - координаты центра диаграммы, радиус, количество секторов, массив процентов, массив наименований), расположив их рядом. Диаграмму снабдить заголовком и наименованием для каждого сектора. Исходные данные сформировать в текстовом файле, количество секторов задавать в программе в виде именованной константы.
масштабирование использовать(т.е. getmaxY, getmaxX)
Пример исходных данных:

Не могу разобраться, как сделать их две рядом и снабдить заголовком и наименованием, пишу, получается что-то страшное. Это надо в виде легенды сделать. Помогите, пожалуйста(
Lexia_nick_otin вне форума Ответить с цитированием
Старый 10.11.2010, 09:52   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Какая среда программирования?
На то что написано можно взглянуть?

Увы, у меня графический режим в консольных программах не включается - нечем помочь.
В Delphi - да.

Последний раз редактировалось Прик; 10.11.2010 в 10:03.
Прик вне форума Ответить с цитированием
Старый 10.11.2010, 09:58   #3
Lexia_nick_otin
 
Регистрация: 05.10.2009
Сообщений: 6
По умолчанию

Код:
program diagramma;
uses graph,crt;
const n=5;
      l_name=10;
type company=record
             name:string[l_name];
             max:real;
           end;
     Tcom=array [1..n] of company;
var com:Tcom;
    i:integer;
    mas:array [1..n] of real;
procedure diogram(var x,y);
  const n=5;
        CloseDotFill=11;
  var key:char;
      com:Tcom absolute x;
      d,r,e,i,rad,sec,ost:integer;
      Xasp,Yasp:word;
      f:text;
      str1,str2:string;
      c,l,miny,maxy,t:real;
      mas:array [1..n] of real absolute y;
  begin
  d:=detect;
  initgraph(d,r, 'c:\bp\bgi');           
  e:=graphresult;
  if e<>grOk then
     writeln(grapherrormsg(e))
  else
  begin
    assign(f,'crug.txt');       
    reset(f);
    i:=1;
    while not eof(f) and(i<=n)do begin
      readln(f,com[i].name);              
      readln(f,com[i].max);
      inc(i);
    end;
    close(f);
   GetAspectRatio(Xasp,Yasp);
   r:=round(Yasp*getMaxy/5/Xasp);
   e:=GetMaxy;
   Rad:=round(Getmaxy/3);        
   t:=0;
   l:=round(360*com[1].max/100);
   SetFillStyle(SolidFill,Lightgreen);     
   Bar(0,0,getmaxx,getmaxy);
   for i:=1 to n do begin
       Setcolor(black);                        
       SetLineStyle(SolidLn,0,ThickWidth);     
       SetFillStyle(SolidFill,i);               
       PieSlice(GetmaxX div 2+5, getmaxY div 2+4,round(t),round(l),Rad); 
       str(com[i].max:5:2,str1);
       Setcolor(i);
       Outtextxy(GetmaxX-200,Getmaxy-100+i*10,str1+'%'+' - '+com[i].name); 
       t:=t+round(360*com[i].max/100);                
       if i<>n-1 then l:=l+round(360*com[i+1].max/100)
          else l:=360;                                 
   end;
    if Readkey=#0 then d:=ord(readkey);      
  Closegraph;
   end;
end;
begin
diogram(com,mas[i]);
end.
Турбо Паскаль среда программирования.
Программка бред пока что, рисует одну диаграммку. Просто это мой первый опыт работы в графическом режиме, я их две вообще разместить не могу. Я вообще первый раз по паскалю за помощью обращаюсь, дурацкий графический режим((((
Lexia_nick_otin вне форума Ответить с цитированием
Старый 10.11.2010, 17:39   #4
Lexia_nick_otin
 
Регистрация: 05.10.2009
Сообщений: 6
По умолчанию

Я решила задачу! Уважаемые модераторы, можете удалить тему, чтобы не висела.
Lexia_nick_otin вне форума Ответить с цитированием