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


Ответ
 
Опции темы Опции просмотра
Старый 10.06.2010, 17:21   #11 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ох! Попробую, но не гарантирую.
Vladimir_S вне форума   Ответить с цитированием

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

Советую вам внимательно пролистать страницы с похожими темами

Диаграмма функции через PChart.
Столбиковая или Круговая диаграмма.

Старый 10.06.2010, 22:25   #12 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ну вот, нарисовал. Сразу несколько пояснений:
1. Оформление в виде модуля - самостоятельно.
2. Конфигурирование процедуры InitGraph - тоже. (У меня это делается через мой запускающий модуль, "заточенный" под мои компы).
3. Английский язык в текстовой части - чтобы не возникало проблем с кодировками (я использую DOS-режим). А в графических шрифтах в моем Паскале и вовсе кириллицы нету.
4. Входные данные преобразованы в константы. Надеюсь, сумеете состыковать со своим методом хранения данных. Собственно, можно районы и месяцы оставить, как есть, а массивы доходов и корзин объявить переменными и поместить в них нужные числа, считанные из вашего файла данных. Тогда в теле программы ничего переделывать не придется. Так будет меньше всего возни.
Вроде всё.
Код:
Uses Graph, CRT;
CONST
 District:ARRAY[1..3] of STRING=('Leninskiy','Oktyabrskiy','Pervomaiskiy');
 Month:ARRAY[1..5] of STRING=('January','February','March','April','May');
 Incom:ARRAY[1..15] of WORD=(30000, 30100, 30300, 30400, 30500, 20000,
                             20300, 20700, 20900, 22150, 40000, 41000,
                             42000, 43000, 44000);
 Basket:ARRAY[1..15] of WORD=(4020, 4040, 4060, 4080, 4100, 3000, 3050,
                             3120, 3220, 3500, 5000, 5100, 5200, 5300,
                             5400);
VAR
 Ratio:REAL;
 d,m:BYTE;
 I_cur,B_cur:WORD;
 i,j:INTEGER;
 S:String;
BEGIN
 ClrScr;
 WriteLn('Enter the district number: 1 - Leninskiy');
 WriteLn('                           2 - Oktyabrskiy');
 WriteLn('                           3 - Pervomaiskiy');
 ReadLn(d);
 WriteLn('Enter the month number: 1 - January');
 WriteLn('                        2 - February');
 WriteLn('                        3 - March');
 WriteLn('                        4 - April');
 WriteLn('                        5 - May');
 ReadLn(m);
 I_cur:=Incom[(d-1)*5+m];
 B_cur:=Basket[(d-1)*5+m];
 Ratio:=1.0*B_cur/I_cur;
 InitGraph() {ЗДЕСЬ НЕОБХОДИМО ЗАДАТЬ ПАРАМЕТРЫ};
 ClearDevice;
 SetTextStyle(DefaultFont,HorizDir,2);
 SetTextJustify(LeftText,TopText);
 SetColor(Cyan);
 OutTextXY(0,0,'District:'+District[d]);
 SetTextJustify(RightText,TopText);
 OutTextXY(640,0,'Month:'+Month[m]);
 SetTextJustify(CenterText,BottomText);
 OutTextXY(320,480,'Press "Enter" to continue...');
 Str(Ratio*100:4:1,S);
 SetTextJustify(LeftText,CenterText);
 OutTextXY(420,190,S+' %');
 SetColor(White);
 SetFillStyle(1,Red);
 PieSlice(320,240,0,Round(360*Ratio),100);
 SetFillStyle(1,Yellow);
 PieSlice(320,240,Round(360*Ratio),360,100);
 ReadKey;
 ClearDevice;
 SetColor(Cyan);
 SetTextStyle(DefaultFont,HorizDir,1);
 SetTextJustify(LeftText,CenterText);
 For i:=1 to 3 do
  OutTextXY(0,100+(i-1)*140,District[i]);
 SetTextJustify(CenterText,TopText);
 For i:=1 to 5 do
  OutTextXY(190+(i-1)*100,0,Month[i]);
 SetTextJustify(CenterText,BottomText);
 OutTextXY(320,480,'Press "Enter" to exit...');
 For i:=1 to 3 do
   for j:=1 to 5 do
    begin
     I_cur:=Incom[(i-1)*5+j];
     B_cur:=Basket[(i-1)*5+j];
     Ratio:=1.0*B_cur/I_cur;
     SetColor(Cyan);
     SetTextJustify(CenterText,BottomText);
     Str(Ratio*100:4:1,S);
     OutTextXY(190+(j-1)*100,68+(i-1)*140,S+' %');
     SetColor(White);
     SetFillStyle(1,Red);
     PieSlice(190+(j-1)*100,100+(i-1)*140,0,Round(360*Ratio),30);
     SetFillStyle(1,Yellow);
     PieSlice(190+(j-1)*100,100+(i-1)*140,Round(360*Ratio),360,30);
    end;
 ReadKey;
 CloseGraph;
end.
Должно получиться так:
aa01.jpg aa02.jpg
Vladimir_S вне форума   Ответить с цитированием
Старый 11.06.2010, 17:16   #13 (permalink)
R45H
Новичок
 
Регистрация: 01.01.2009
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо за диаграмму. Вообще я про константы узнал только перед сдачей, потому что утром, не читая, быстро кинул прогу на флешку и убежал на остановку. Хорошо, что успел в "Enter the month number:" дописать оставшиеся 7 месяцев, а потом тыкнуть на 1..5, дабы оставить этот недочёт незамеченным. Константы чисел совпадали с реальными, поэтому это тоже пронесло. Наименования и количество районов, кстати, тоже не фиксированные, но я сослался, что не понимаю, как сделать по-другому. Про кодировку сказал, что не знаю как исправить, поэтому написал на английском, но мне ответили, что так и должно быть. В общем у меня получилось сдать эту диаграмму, Вы спасли мне оценку и гордость, и за это ещё раз, Огромное Спасибо!
R45H вне форума   Ответить с цитированием
Старый 11.06.2010, 17:36   #14 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ну и славно.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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


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

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




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

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