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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сравнение характеристик некоторой техники, с чего начать? http://www.cyberforum.ru/cpp-beginners/thread1137791.html
Нужно написать программу в которой будет реализовано сравнение характеристик некоторой техники, но я даже не знаю с чего начать(
C++ Подскажите пожалуйста где можно почитать про структуры Подскажите пожалуйста где можно почитать про структуры Добавлено через 1 минуту Структуры – это составные типы данных, построенные с использованием других типов. Они представляют собой... http://www.cyberforum.ru/cpp-beginners/thread1137788.html
C++ Работа с файлами
Помогите пожалуйста, что не правильно,,,не выводит результат в файл #include<iostream.h>; #include<fstream.h>; #include<iomanip>; const int N=100; struct strMark { char A;
Как заставить Strncpy вложить в itog часть символов строки str, если дина str больше, чем кол-во нужных нам символов? C++
strncpy(itog,str,size+1); cout<<itog; itog вообще не выводится Добавлено через 2 минуты Вот код. #include <iostream> #include <cstring>
C++ Код Хаффмана http://www.cyberforum.ru/cpp-beginners/thread1137740.html
Всем доброго дня! имеется код хафманна, работает, но считает неправильно! кто может объяснить в чем дело? #include <iostream> #include <vector> #include <map> #include <list> #include...
C++ Даны действительное число а, многочлен степени n. Получить многочлен (x^2+2ax+3)*P(x) Даны действительное число а, многочлен степени n. Получить многочлен (x^2+2ax+3)*P(x). :help: P(x)={p}_{n}{x}^{n}+{p}_{n-1}{x}^{n-1}+...+{p}_{0} подробнее

Показать сообщение отдельно
romasimeiz
6 / 6 / 0
Регистрация: 11.04.2011
Сообщений: 260

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

03.04.2014, 12:41. Просмотров 261. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru