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

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

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

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

Столбиковая или круговая диаграмма.

  • Автор темы Автор темы R45H
  • Дата начала Дата начала

R45H

Ученик
Регистрация
1 Янв 2009
Сообщения
8
Реакции
0
Баллы
0
Столбиковая или круговая диаграмма.

Ребят, я понимаю, что уже достали со своими диаграммами, но всё же прошу помощи.
Программа написана в паскале, состоит из основной программы (Меню) и 5-и модулей. Всё, что нужно, это создать в отдельном модуле одну диаграмму на выбор, вот они:
1. для каждого района за указанный месяц построить круговую диаграмму, на которой показать в % от дохода долю стоимости потребительской корзины и долю других расходов.
2. За указанный месяц построить столбиковую диаграмму, отражающую по районам соотношение между доходом и стоимостью потребительской корзины, столбики диаграммы расположить в порядке возрастания вычисленного соотношения.
Файлик с расширением .toh нужно кинуть в корневую папку диска C - это заполненный типизированный файл, который открывается программой. Там в таблице выводятся некие данные, их можно: просматривать / редактировать / выводить на печать. Нужно просто эти данные ещё и отобразить в диаграмме.
Ребят, я на вас надеюсь, у меня решается оценка! Сам разобраться пытался, ничего не вышло. Что угодно, но только не графика! Нигде больше мне не помогли, надеюсь только на вас!
 

Вложения

  • 123.zip
    123.zip
    9 KB · Просмотры: 19
Последнее редактирование:
Ребят, я понимаю, что уже достали со своими диаграммами, но всё же прошу помощи.
Значит так. Я бы мог Вам помочь с построением диаграммы, но у меня нет ни времени, ни желания разбираться в Вашей программе, а потому условие будет таким: Вы выкладываете файл, содержащий в явном виде таблицу данных, по которым нужно построить диаграмму, и сопровождаете необходимыми пояснениями, я по этим данным строю диаграмму. Дальнейшая состыковка, оформление модуля и пр. - Ваша забота. Если устроит, то давайте.
 
Значит так. Я бы мог Вам помочь с построением диаграммы, но у меня нет ни времени, ни желания разбираться в Вашей программе, а потому условие будет таким: Вы выкладываете файл, содержащий в явном виде таблицу данных, по которым нужно построить диаграмму, и сопровождаете необходимыми пояснениями, я по этим данным строю диаграмму. Дальнейшая состыковка, оформление модуля и пр. - Ваша забота. Если устроит, то давайте.

Разбираться в программе НЕ нужно, зачем? Достаточно открыть файл MAIN, откомпилировать и запустить. Появится меню, первая строка которого называется "Просмотр всего файла" - это и есть таблица данных. Модуль ModData содержит все глобальные переменные, из него нужно только принять во внимание тип rec и переменную S этого типа - при помощи этого в файл заносятся данные.
Но впринципе ладно, сейчас всё переделаю.
 
Вот упрощённый вариант:
 

Вложения

  • 123.zip
    123.zip
    1.9 KB · Просмотры: 19
Ну что сказать - нет, господин Редькин, не пойдет. Ни та, ни другая программы не запускаются, например, полный (первый вариант) ругается на неописанную переменную С в модуле Forma_vv, упрощенный вариант ругается еще на что-то, в общем, я повторяю условие: дайте мне В ЯВНОМ ВИДЕ файл, по которому нужно построить диаграмму. Я НЕ ХОЧУ запускать (и уж тем более отлаживать) вашу программу. Можно даже не в виде файла, а прямо здесь - колонка значений аргумента (или название, признак и т.п.) и колонка соответствующих значений функции. Всё.
 
Ну что ж, хорошо. Вот пример данных:

║ № ║ M ║ Район ║ УрДох. ║ СтКор. ║

│ 1 │ 1 │ ленинский │ 30000 │ 4020 │
│ 2 │ 2 │ ленинский │ 30100 │ 4040 │
│ 3 │ 3 │ ленинский │ 30300 │ 4060 │
│ 4 │ 4 │ ленинский │ 30400 │ 4080 │
│ 5 │ 5 │ ленинский │ 30500 │ 4100 │
│ 6 │ 1 │ октябрьский │ 20000 │ 3000 │
│ 7 │ 2 │ октябрьский │ 20300 │ 3050 │
│ 8 │ 3 │ октябрьский │ 20700 │ 3120 │
│ 9 │ 4 │ октябрьский │ 20900 │ 3220 │
│ 10 │ 5 │ октябрьский │ 22150 │ 3500 │
│ 11 │ 1 │ первомайский │ 40000 │ 5000 │
│ 12 │ 2 │ первомайский │ 41000 │ 5100 │
│ 13 │ 3 │ первомайский │ 42000 │ 5200 │
│ 14 │ 4 │ первомайский │ 43000 │ 5300 │
│ 15 │ 5 │ первомайский │ 44000 │ 5400 │

Первый столбец - номер строки;
Второй столбец - месяц;
Третий столбец - уровень дохода на душу населения;
Четвёртый столбец - стоимость потреб. корзины.
 
Последнее редактирование:
Так - вот это уже дело! Единственное - не хватает данных за май по Первомайскому району.
И еще вопрос (если знаете). Можно ли считать, что графический экран будет в VGA-моде, т.е. 640х480 пикселов? Если да - то мне было бы проще, нет - ничего страшного, сделаем под любой.
 
Да, лучше сделать в VGA. В любом случае всегда можно переделать.
 
Да, и еще вопрос: срок?
 
Желательно до завтра.
 
Ох! Попробую, но не гарантирую.
 
Ну вот, нарисовал. Сразу несколько пояснений:
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() {[B][COLOR=Red]ЗДЕСЬ НЕОБХОДИМО ЗАДАТЬ ПАРАМЕТРЫ[/COLOR][/B]};
 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.webp AA02.webp
 
Спасибо за диаграмму. Вообще я про константы узнал только перед сдачей, потому что утром, не читая, быстро кинул прогу на флешку и убежал на остановку. Хорошо, что успел в "Enter the month number:" дописать оставшиеся 7 месяцев, а потом тыкнуть на 1..5, дабы оставить этот недочёт незамеченным. Константы чисел совпадали с реальными, поэтому это тоже пронесло. Наименования и количество районов, кстати, тоже не фиксированные, но я сослался, что не понимаю, как сделать по-другому. Про кодировку сказал, что не знаю как исправить, поэтому написал на английском, но мне ответили, что так и должно быть. В общем у меня получилось сдать эту диаграмму, Вы спасли мне оценку и гордость, и за это ещё раз, Огромное Спасибо! :tehnari_ru_889:
 
Назад
Сверху