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

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

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

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

03.04.2014, 12:41. Просмотров 238. Ответов 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 построить эту круговую диаграмму?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2014, 12:41     Нарисовать круговую диаграмму на основе имеющихся данных
Посмотрите здесь:

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

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

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

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

График на основе данных - C++
Вечер добрый. Днем, была проблема с прогой. Сейчас проблема с графиком. Сдал преподу прогу, засчитал. Но теперь, требует построить график...

База данных на основе очереди - C++
Доброго времени суток! Я писал курсач (1 курс) и была поставлена задача написать типа БД ( динамическую структуру крч) мне нужно было...

База данных на основе двусвязного списка - C++
Давайте немного поговорим про двусвязный список. Я немного подзапутался, мне нужен трезвый совет. Если структуры, с которыми мы...

Заполнить массив В на основе данных матрицы А - C++
Доброго времени суток, прошу помощи в решении задачки. Дано квадратную матрицу А размером nxn. Заполнить массив B частным наименьшего...

Класс на основе заданной структуры данных - C++
Необходимо разработать программу, реализующую простой класс на основе заданной структуры данных. Код я смогла написать не знаю...

Поиск по базе данных на основе txt -файла - C++
Здравствуйте, в файле хранится база данных в формате: &quot;Предприятие; Форма собственности; Владелец; Продукция; Отрасль; Телефон ...

Простой класс на основе заданной структуры данных с++ - C++
Помогите пожалуйста... Необходимо разработать программу, реализующую простой класс на основе заданной структуры данных.

Найти зарплату на основе данных двумерного массива - C++
в двумерном массиве храниться информация о зарплате 20 человек за каждый месяц года (Первого человека в 1 строке Второго человека во второй...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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