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

Построение графиков элементарных функций - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ организация и обработка списков http://www.cyberforum.ru/cpp-beginners/thread361822.html
дан набор из 10 чисел.Создать очередь,содержащую данные числа в указанном порядке(первое число будет размещаться в начале очереди,последнее- в конце),и вывести указатели р1,р2 на начало и конец очереди.
C++ Как правильно передать уникальный аргумент в функцию Здравствуйте! Помогите пожалуйста в решении такой проблемы: Есть структура, она должна хранить в себе строку, и уникальный символ. В главной функции есть функция, которая должна принимать структуру с уникальным символом и строкой. Вопрос, как это организовать? #include <iostream> using namespace std; struct thread_arg { char *str; http://www.cyberforum.ru/cpp-beginners/thread361776.html
C++ Продолжение изучения C++
Здравствуйте, месяц назад я начал изучать C++. У Друга взял книгу "Освой самостоятельно C++ за 24 часа". Книжка показалась несложной, ибо до этого с программированием я знаком не по наслышке. И вот я ее прочитал, теперь могу создавать простые консольные приложения. Теперь хочу продолжить изучение. И встает вопрос, что дальше читать/изучать? Что посоветуете?
Отчистка экрана C++
Народ, есть ли какая-нить общая функция, которая чистит экран, типа system("CLS"); но для Windows и Linux сразу?
C++ ввод вывод СИ++ http://www.cyberforum.ru/cpp-beginners/thread361428.html
ля каждого посетителя парикмахерской (с одним мастером) известны t - момент его прихода и to – продолжительность его обслуживания. Сколько клиентов обслужит мастер за смену продолжительностью T? Основную часть программы мне написали на этом форуме, но еще нужно осуществить ввод вывод данных.(t - момент его прихода и to – продолжительность его обслуживания). Кто понимает - помогите) #include...
C++ Выбор программы Доброго времени суток. Можете посоветовать что то не очень замысловатое для курсовой работы. А то ни как не могу придумать тему. Есть два обязательных условия это программа должна быть написана в С++, DEV C или Delphi. ну и второе это использование WIN IP (надеюсь правильно написал) Вот уже второй день ломаю в голову не могу что то придумать может кто то из вас посоветует?... Была идея... подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
06.10.2011, 16:49     Построение графиков элементарных функций
Я привожу код строящий cos(x), используя всю плоскость окна консоли(для этого снабдил проект функциями масштабирования). Думаю подогнать под проект труда не составит
Код программы
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
105
106
107
108
109
#include <windows.h>
#include <stdio.h>
#include <math.h>
 
#define RED RGB(255,0,0)
#define GRN RGB(0,255,0)
#define BLU RGB(0,0,255)
 
#define BLK RGB(0,0,0)
#define WHT RGB(255,255,255)
 
HPEN  getPen(int iPEN_STYLE, int iPEN_SIZE, int iCOLORREF);
BOOL  SetPoint(HDC hDC, HPEN hPen, COORD PNT);
BOOL  PlotLine(HDC hDC, HPEN hPen, COORD BGN, COORD END);
//Функция график которой строим
double f(double x){return cos(x);}
double * mf(double a, double b, double n)
{
    double x = a;
    double h = (b - a)/n;
    double vec[2];
    vec[0] = f(a);
    vec[1] = f(a);
    while(x < b)
    {
        if(vec[1] < f(x))
            vec[1] = f(x);
        if(f(x) < vec[0])
            vec[0] = f(x);
        x += h;
    }
    return &vec[0];
}
 
int main()
{
    long n;
    double a = 0, b = 0,x, dx, *vec;
    double CX, CY;
    
    HWND    hWnd = GetForegroundWindow();
    HPEN    RPEN = getPen(PS_SOLID, 2, RED);
    HPEN    GPEN = getPen(PS_SOLID, 2, GRN);
    HPEN    BPEN = getPen(PS_SOLID, 2, BLU);
    HPEN    WPEN = getPen(PS_SOLID, 3, WHT);
    RECT    pRECT= {0};
    COORD   BGN  = {0};
    COORD   END  = {0};
    GetClientRect(hWnd,&pRECT);
    
    HDC hDC = GetWindowDC(hWnd);
 
    printf("\tPloting f(x) = ln(x)\r\n");
    printf("Enter diapasone [a;b]\r\n");
    printf("a = ");scanf("%lf",&a);
    printf("b = ");scanf("%lf",&b);
    printf("Enter number of points\r\n");
    printf("n = ");scanf("%u",&n);
    vec = mf(a, b, n);//Нужно знать макс и мин для масштабирования
    if(hDC)
    {
        CX = (b - a)/(pRECT.right - pRECT.left);
        CY = (vec[1] - vec[0])/(pRECT.bottom - pRECT.top);
        
        x = a;dx = (b - a)/n;
        BGN.X = x   /CX;
        BGN.Y = f(x)/CY + (pRECT.bottom - pRECT.top)/2;
        SetBkMode(hDC,TRANSPARENT);
        SetPoint (hDC, WPEN, BGN);
        while(x < b)
        {
            END.X = x   /CX;
            END.Y = f(x)/CY + (pRECT.bottom - pRECT.top)/2;
            PlotLine(hDC, RPEN, BGN, END);
            SetPoint (hDC,WPEN, END);
            BGN = END;
            x += dx;
        }
    }
    system("pause");
    return 0;
}
 
HPEN getPen(int iPEN_STYLE, int iPEN_SIZE, int iCOLORREF)
{
        return CreatePen(iPEN_STYLE, iPEN_SIZE, iCOLORREF);
}
 
BOOL SetPoint(HDC hDC, HPEN hPen, COORD PNT)
{
        EXTLOGPEN pINFO;
        GetObject(hPen,sizeof(EXTLOGPEN),&pINFO);
        SelectObject(hDC,hPen);
        return Ellipse
        (
                hDC,
                PNT.X - pINFO.elpWidth,
                PNT.Y + pINFO.elpWidth, 
                PNT.X + pINFO.elpWidth,
                PNT.Y - pINFO.elpWidth
        );
}
 
BOOL PlotLine(HDC hDC, HPEN hPen, COORD BGN, COORD END)
{
        SelectObject(hDC,hPen);
        MoveToEx(hDC,BGN.X,BGN.Y,NULL);
        return LineTo(  hDC,END.X,END.Y);
}
Миниатюры
Построение графиков элементарных функций  
 
Текущее время: 10:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru