Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
romasimeiz
6 / 6 / 0
Регистрация: 11.04.2011
Сообщений: 260
#1

Нарисовать круговую диаграмму на основе имеющихся данных - C++

03.04.2014, 12:41. Просмотров 247. Ответов 0
Метки нет (Все метки)

Добрый день!
Помогите разобраться с данной функцией.
Идея такая: Из файла считывается к примеру 100 значений в
C++
1
list
, далее некая процедура обрабатывает эти данные и записывает результат.
Есть контейнер m_Data, в котором хранится набор этих самых значений. Приведённая ниже функция рисует график по 10 первым значениям.
Теперь задача стоит, чтобы таким же образом построить круговую диаграмму.
Если можете, помогите разобраться.
Что то примерно понял, благодаря комментариям.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
void lab03::RenderDiagram( HDC wdc, const RECT& rc ) const
{
    if( m_Data.empty() )
        return;
 
    HPEN pen = CreatePen( PS_SOLID, 3, RGB( 0, 0, 255 ) ); 
    SelectObject( wdc, pen ); 
   //количество элементов для вывода
    const int M = min( int( m_Data.size() ), 10 );
 
    //ищем минимум и максимум
    elem mn = m_Data.front(), mx = mn;
    int p = 0;
    for( it i = m_Data.begin(), e = m_Data.end(); i != e && p < M; ++p, ++i )
    {
        mn = min( *i, mn );
        mx = max( *i, mx );
 
    }// for( it i = m_Data.begin(), e = m_Data.end(); i != e && p < M; ++p, ++i )
 
    //масштаб элементов
    const elem D = max( 1, mx - mn );
 
    //масштаб по х
    float sx = float( rc.right - rc.left ) / M;
    //масштаб по у
    float sy = float( rc.bottom - rc.top );
 
    p = 0;
    for( it i = m_Data.begin(), e = m_Data.end(); i != e; ++i, ++p )
    {
        //координаты текущей точки
        int x = int( p * sx );
 
        //масштабируем значение
        float val = float( *i - mn ) / D;
 
        //вычтем из нижней границы окна, 
        //т.к. начало координат в левом верхнем углу окна.
        int y = rc.bottom - int( val * sy );
                
        if( !p )
            MoveToEx( wdc, x, y, 0 );
        else
            LineTo( wdc, x, y );
 
    }// for( it i = m_Data.begin(), e = m_Data.end(); i != e; ++i, ++p )
            
        DeleteObject( pen );
 
}
Добавлено через 26 минут
Пробовал при помощи функции AngleArc(wdc, nX, nY, dwRadius, xStartAngle, xSweepAngle);

Объясните пожалуйста, как при помощи моих 10-ти значений из m_Data построить эту круговую диаграмму?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2014, 12:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нарисовать круговую диаграмму на основе имеющихся данных (C++):

Написать программу, которая выводит круговую диаграмму. - C++
Написать программу, которая выводит круговую диаграмму, отображающую товарооборот (в %)книжного магазина. Исходные данные (объем продаж в...

Реализовать функцию, которая по входным данным строит круговую диаграмму и гистограмму - C++
написать процеуру которая по входным данным, например по результатам экзаменационной сессии, строит круговую диаграмму и гистограмму.

Создать новое свойство (на основе имеющихся) для потомка, используя дружественные функции - C++
Здравствуйте, подскажите пожалуйста!Нужно создать новое свойство на основе имеющихся для потомка, используя дружественные функции, я...

Удаление пробелов перед знаками препинания (нарисовать диаграмму конечного автомата) - C++
Удаление пробела, если он стоит перед запятой, точкой, точкой и запятой, восклицательным знаком, вопросительным знаком. Надо нарисовать...

Даны две строки. Составить третью строку из слов, имеющихся в обеих данных строках - C++
Здравствуйте! Нуждаюсь в помощи. Есть следующее задание: даны две строки. Составить третью строку из слов, имеющихся в обеих данных...

Программа выводит в окне диаграмму динамического массива данных - C++
Можете создать программу которая выводит в окне диаграмму динамического массива данных, буду очень благодарен!!!

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2014, 12:41
Привет! Вот еще темы с ответами:

Нарисовать круговую диаграмму - Delphi
Нарисовать круговую диаграмму со значениями 20%, 30%, 50%

Нарисовать круговую диаграмму - C#
Здравствуйте. Подскажите пожалуйста, можно ли(если да, то как) в MS Visual Studio 2010 нарисовать график, как на картинке в с помощью...

Как нарисовать красивую круговую диаграмму - Программирование Android
Пишу приложение, в котором нужно рисовать круговые диаграммы. Использую canvas и drawArc(). Но получается не красиво, слишком примитивно. В...

Нарисовать круговую диаграмму процентного соотношения - QBasic
помогите, пожалуйста!!! надо нарисовать круговую диаграмму процентного соотношения богатых(9%), людей среднего класса(15%), бедных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru