10.06.2010, 17:21 | #11 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
10.06.2010, 17:21 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Советую вам внимательно пролистать страницы с похожими темами Диаграмма функции через PChart. Столбиковая или Круговая диаграмма. |
10.06.2010, 22:25 | #12 (permalink) |
Специалист
Регистрация: 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. |
11.06.2010, 17:16 | #13 (permalink) |
Новичок
Регистрация: 01.01.2009
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Спасибо за диаграмму. Вообще я про константы узнал только перед сдачей, потому что утром, не читая, быстро кинул прогу на флешку и убежал на остановку. Хорошо, что успел в "Enter the month number:" дописать оставшиеся 7 месяцев, а потом тыкнуть на 1..5, дабы оставить этот недочёт незамеченным. Константы чисел совпадали с реальными, поэтому это тоже пронесло. Наименования и количество районов, кстати, тоже не фиксированные, но я сослался, что не понимаю, как сделать по-другому. Про кодировку сказал, что не знаю как исправить, поэтому написал на английском, но мне ответили, что так и должно быть. В общем у меня получилось сдать эту диаграмму, Вы спасли мне оценку и гордость, и за это ещё раз, Огромное Спасибо!
|
11.06.2010, 17:36 | #14 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ну и славно.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|