Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 18.11.2021
Сообщений: 3

Построить график

13.12.2021, 01:39. Показов 2521. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно построить график как на картинке. С таким кодом выходит только пустое окно. Подскажите, пожалуйста, как нарисовать оси и чтобы была видна кривая.
Миниатюры
Построить график   Построить график  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.12.2021, 01:39
Ответы с готовыми решениями:

Нужно построить график функции y = x2 на интервале [-3,3] и Построить график функции (эллипс) x^2/16 + y^2/9 = 1
Нужно построить график функции y = x2 на интервале и Построить график функции (эллипс) x^2/16 + y^2/9 = 1. На C++

Построить график функции y=x^2. График строится из отрезков и алгоритма Брезенхема
Построить график функции y=x^2. График строится с помощью отрезков. Для построения отрезков использовать алгоритм Брезенхема.

Составить график функции. Дана функция нужно построить график по полученным точкам
Помогите составить график функции. Дана функция нужно построить график по полученным точкам a=1.237845 b=-0.1244321*power(10,3) begin...

1
2735 / 890 / 331
Регистрация: 10.02.2018
Сообщений: 2,112
13.12.2021, 13:24
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
//-------------------------------------------------------------------------------------------------
#include <windows.h>
#include <iostream>
#include <cmath>
 
//-------------------------------------------------------------------------------------------------
double func(double x)
{
    // корень не определён для отрицательных чисел
    // подкоренное выражение становится отрицательным при X от минус бесконечности до единицы
    if (x < 1)
        return 3.0;
 
    return sqrt(pow(x, 3) - 1) + sin(pow(x, 2));
}
 
//-------------------------------------------------------------------------------------------------
int main()
{
    HWND hwnd = GetConsoleWindow();
    HDC hdc = GetDC(hwnd);
 
    // задаём диапазон изменений X
    double src_x_min = -2.5;
    double src_x_max = 2.5;
    double src_cx = src_x_max - src_x_min;
    // задаём диапазон изменений Y
    double src_y_min = -1;
    double src_y_max = 4;
    double src_cy = src_y_max - src_y_min;
 
    // динамически считаем диапазон Y (что бы включить рассчёт нужно заменить false на true)
    if (false)
    {
        // ищем минимум и максимум Y на заданном диапазоне
        double min_y = func(src_x_min);
        double max_y = func(src_x_min);
        for (double x = src_x_min; x < src_x_max; x += 0.005)
        {
            double y = func(x);
 
            if (min_y > y)
                min_y = y;
 
            if (max_y < y)
                max_y = y;
        }
        std::cout << "min: " << min_y << std::endl;
        std::cout << "max: " << max_y << std::endl;
 
        // посчитанный диапазон Y
        src_y_min = min_y;
        src_y_max = max_y;
        src_cy = max_y - min_y;
    }
 
    // размеры окна
    RECT rc;
    GetClientRect(hwnd, &rc);
    int width = rc.right - rc.left;
    int height = rc.bottom - rc.top;
 
    // посчитаем параметры области вывода (сделаем 10% отступы по краям)
    double dst_x0 = width / 10.;
    double dst_y0 = height / 10.;
    double dst_cx = width * 8 / 10.;
    double dst_cy = height * 8 / 10.;
 
    // нарисуем оси
    {
        HPEN pen = CreatePen(PS_SOLID, 1, RGB(128, 128, 128));
        HPEN prevPen = (HPEN)SelectObject(hdc, pen);
 
        double dst_x = (0 - src_x_min) * dst_cx / src_cx + dst_x0;
        MoveToEx(hdc, dst_x, 0, 0);
        LineTo(hdc, dst_x, height);
 
        double dst_y = (0 - src_y_min) * dst_cy / src_cy + dst_y0;
        dst_y = height - dst_y;
        MoveToEx(hdc, 0, dst_y, 0);
        LineTo(hdc, width, dst_y);
 
        SelectObject(hdc, prevPen);
        DeleteObject(pen);
    }
 
    // нарисуем график
    for (double src_x = src_x_min; src_x < src_x_max; src_x += 0.005)
    {
        double src_y = func(src_x);
 
        double dst_x = (src_x - src_x_min) * dst_cx / src_cx + dst_x0;
        double dst_y = (src_y - src_y_min) * dst_cy / src_cy + dst_y0;
        dst_y = height - dst_y;
 
        SetPixel(hdc, dst_x, dst_y, RGB(255, 255, 255));
    }
 
    ReleaseDC(hwnd, hdc);
    std::cin.ignore();
    return 0;
}
 
//-------------------------------------------------------------------------------------------------
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.12.2021, 13:24
Помогаю со студенческими работами здесь

График. Построить полярную плоскость и график функции, которая задана в аналитическом виде
построить полярную плоскость и график функции, которая задана в аналитическом виде. p=2*a/sin(2фи)

Построить график экспоненты, декартов график в логарифмической шкале
построить график е в степени х,декартовый график в логорефмичной шкале????????????????????

Построить график движения и график скорости тела
Тело массой m начинает падать с высоты 1000м, испытывая силу сопротивления воздуха, зависящую от его скорости согласно закону...

Нужно построить график функций, вычислить и построить диаграмму и сделать легенду.
http://rghost.ru/private/51147973/42d3fdac651f8296a3ad0c7b14f1686e Нужно построить график функций, вычислить и построить диаграмму и...

Как построить оси координат на picturebox и на этих осях построить график функции
Здравствуйте, в общем не могу разобраться как построить оси координат на picturebox и на этих осях еще построить некую функцию, помогите...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru