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

Точечный график функции - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
Астик
 Аватар для Астик
11 / 11 / 0
Регистрация: 03.10.2010
Сообщений: 173
Записей в блоге: 1
07.11.2010, 14:08     Точечный график функции #1
Помогите пожалуйста, в книжке приводится такой пример задачи
Написать прог. которая чертит на экране точечный график функции у=0.х^2+4х-3. Диапазон изменения
аргумента: от -15 до 5; шаг приращения аргумента: 0,1. График вывести на фоне координатных осей, точка пересечения которых должна находится в центре экрана.

и в качестве решения вот этот код
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include "stdio.h"
#include "conio.h"
#include "graphics.h"
 
#define HB 10 // ¬*ЄбЁ¬*«м*®Ґ Є®«ЁзҐбвў® §**зҐ*Ё©
#define WS 300
#define HS 150
 
   char  head[40];    // §*Ј®«®ў®Є
   float kurs[HB];    // ¤***лҐ
   char* date[HB][5]; // Ї®¤ЇЁбЁ ¤***ле - ¤*в* ў д®а¬*⥠dd.mm
 
   int nrec; // Є®«ЁзҐбвў® н«Ґ¬Ґ*в®ў ¤***ле 
 
   int dx;     // и*Ј Ї® е
   int py[HB];  // y-Є®®а¤Ё**вл в®зҐЄ ** Ја*дЁЄҐ
 
// ўў®¤ Ё ®Ўа*Ў®вЄ* Ёб室*ле ¤***ле
void  LoadData()
{
 
     FILE* f; // д*©« ¤***ле
 
     int i;
 
    if ( (f = fopen("c:\\borlandc\\cpp\\kurs.txt", "rt")) == NULL)
    {
        printf("ЋиЁЎЄ* ¤®бвгЇ* Є д*©«г ¤***ле\n");
        getch();
        return;
    }
 
    fscanf(f,"%s",head);
    printf("%s\n",head);
 
    i = 0;
    while ((! feof(f) ) && ( i < HB ))
    {
        fscanf(f,"%s",&date[i]);
        printf("%s\n",date[i]);
 
        fscanf(f,"%f",&kurs[i]);
        printf("%5.2f\n",kurs[i]);
        i++;
    }
    nrec = i;
    fclose(f);
 
    // **©вЁ ¬Ё*Ё¬*«м*л© н«Ґ¬Ґ*в ¬*ббЁў*
    float min = kurs[0];
    float max = kurs[0];
 
    for ( i = 1; i < nrec; i++ )
    {
        if ( kurs[i] < min)
            min = kurs[i];
 
        if ( kurs[i] > max)
            max = kurs[i];
     }
 
    // ўлзЁб«Ёвм y-Є®®а¤Ё**вл в®зҐЄ
    for (i=0; i < nrec; i++)
        py[i] = (HS-20) * (kurs[i]- min)/(max - min)+2;
 
    return;
}
 
void Graphic()
{
    int x0, y0;
    int x;
 
    int dx;
    int i;
 
    char st[20];
 
    x0 = 10;
    y0 = HS + 20;
    dx = (WS - 2* x0)/ (nrec );
 
    outtextxy(x0,10, head );
    rectangle(1,1,WS,y0+10);
 
    x =x0;
    moveto(x,y0-py[0]);
    x =x +dx;
 
    for ( i = 1; i < nrec; i++)
    {
      lineto(x,y0-py[i]);
       x= x+dx;
    }
 
    x = x0;
    for ( i = 0; i < nrec; i++)
    {
     sprintf(st,"%2.2f", kurs[i]);
     outtextxy(x,y0 - py[i]-10,st);
       x= x+dx;
    }
}
 
void main(void)
{
   int gdriver = DETECT;
   int gmode;            
   int errorcode;        
 
   initgraph(&gdriver, &gmode, "c:\\borlandc\\bgi\\");
   errorcode = graphresult();
 
   if (errorcode != grOk)  // (r)Ёрцт  р-р¦р "р ¦рр ?* ¤. *?ірї 
   {
      printf("ЋиЁЎЄ*: %d\n", errorcode);
      puts("„«п §*ўҐаиҐ*Ёп **¦¬ЁвҐ <Enter>");
      getch();
      return;
   }
 
   LoadData();
   Graphic();
 
   getch();
   closegraph();
}
но у меня в си 2010 ругается на
C++
1
#include "graphics.h"
C++
1
2
3
initgraph
closegraph();
graphresult();
объясните кто может ! что мне делать ? очень хочу освоить эту тему )!

Добавлено через 26 минут
(у=0.х^2+4х-3.) извините ошибка вышла ) у=0.5*х^2+4*х-3.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2010, 14:08     Точечный график функции
Посмотрите здесь:

график функции C++
График функции C++
C++ точечный график в dev c++
C++ График функции
C++ График функции
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mencey
 Аватар для Mencey
145 / 92 / 7
Регистрация: 22.07.2010
Сообщений: 424
07.11.2010, 14:25     Точечный график функции #2
Цитата Сообщение от Астик Посмотреть сообщение
#include "graphics.h"
Graphics.h - это каменный век.
Поэтому советую приобрести Turbo C++ 3.1.

Не по теме:

У вас даже коментарии с эроглифами!

Астик
 Аватар для Астик
11 / 11 / 0
Регистрация: 03.10.2010
Сообщений: 173
Записей в блоге: 1
07.11.2010, 15:24  [ТС]     Точечный график функции #3
Цитата Сообщение от Mencey Посмотреть сообщение
Graphics.h - это каменный век.
Поэтому советую приобрести Turbo C++ 3.1.
Не по теме:
У вас даже коментарии с эроглифами!
в смысле я это с диска скопировал) а в Вижуал Студио 2010 как это реализовать ?

Добавлено через 6 минут
Цитата Сообщение от Mencey Посмотреть сообщение
Graphics.h - это каменный век.
Поэтому советую приобрести Turbo C++ 3.1.
Не по теме:
У вас даже коментарии с эроглифами!
в смысле я это с диска скопировал) а в Вижуал Студио 2010 как это реализовать ?

Добавлено через 17 минут
Цитата Сообщение от Астик Посмотреть сообщение
Graphics.h - это каменный век.
Поэтому советую приобрести Turbo C++ 3.1.
вот поэтому он и не распознает! я хочу понять как этот код переделать под 2010 вижуал с++
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.11.2010, 15:29     Точечный график функции #4
в любой версии VS вы не скомпилируйте этот код, он будет компилироватся только в Turbo C++ 3.1
графика в студии это - GDI, DirectX, OpenGL
Астик
 Аватар для Астик
11 / 11 / 0
Регистрация: 03.10.2010
Сообщений: 173
Записей в блоге: 1
07.11.2010, 18:44  [ТС]     Точечный график функции #5
Цитата Сообщение от Maxwe11 Посмотреть сообщение
в любой версии VS вы не скомпилируйте этот код, он будет компилироватся только в Turbo C++ 3.1
графика в студии это - GDI, DirectX, OpenGL
но в книге рассматривается VS

Добавлено через 2 часа 15 минут
Че больше никто ничего не знает?
Mencey
 Аватар для Mencey
145 / 92 / 7
Регистрация: 22.07.2010
Сообщений: 424
07.11.2010, 18:48     Точечный график функции #6
Скачайте Turbo C++. Достаньте из него хидер graphics.h и билиотеки для графики. И зпихай всё это в VS.
Астик
 Аватар для Астик
11 / 11 / 0
Регистрация: 03.10.2010
Сообщений: 173
Записей в блоге: 1
07.11.2010, 19:37  [ТС]     Точечный график функции #7
Цитата Сообщение от Mencey Посмотреть сообщение
Скачайте Turbo C++. Достаньте из него хидер graphics.h и билиотеки для графики. И зпихай всё это в VS.
а как это сделать?

Добавлено через 16 минут
Как реализовать эту программу в VS 2010?
KpeHDeJIb
 Аватар для KpeHDeJIb
56 / 56 / 3
Регистрация: 31.10.2010
Сообщений: 103
07.11.2010, 19:48     Точечный график функции #8
Цитата Сообщение от Maxwe11 Посмотреть сообщение
он будет компилироватся только в Turbo C++ 3.1
Скорее в Borland C++ 3.1, где BGI был.
Астик
 Аватар для Астик
11 / 11 / 0
Регистрация: 03.10.2010
Сообщений: 173
Записей в блоге: 1
07.11.2010, 19:56  [ТС]     Точечный график функции #9
Цитата Сообщение от KpeHDeJIb Посмотреть сообщение
Скорее в Borland C++ 3.1, где BGI был.
я это уже понял . подскажите как переделать код под VS
KpeHDeJIb
 Аватар для KpeHDeJIb
56 / 56 / 3
Регистрация: 31.10.2010
Сообщений: 103
07.11.2010, 20:03     Точечный график функции #10
Цитата Сообщение от Астик Посмотреть сообщение
я это уже понял . подскажите как переделать код под VS
Качаешь отсюда библиотеку и используешь: http://www.cs.colorado.edu/~main/bgi/visual/
Астик
 Аватар для Астик
11 / 11 / 0
Регистрация: 03.10.2010
Сообщений: 173
Записей в блоге: 1
07.11.2010, 20:18  [ТС]     Точечный график функции #11
Цитата Сообщение от KpeHDeJIb Посмотреть сообщение
Качаешь отсюда библиотеку и используешь: http://www.cs.colorado.edu/~main/bgi/visual/
он не переходит по ссылке, говорит ошибка! а нельзя эту прогу переписать без
C++
1
#include <graphics.h>
KpeHDeJIb
 Аватар для KpeHDeJIb
56 / 56 / 3
Регистрация: 31.10.2010
Сообщений: 103
07.11.2010, 20:24     Точечный график функции #12
Цитата Сообщение от Астик Посмотреть сообщение
а нельзя эту прогу переписать без
Ну тогда и все остальное надо будет переписывать, очевидно же. Можешь конечно с использованием GDI написать все, если хочешь.
Астик
 Аватар для Астик
11 / 11 / 0
Регистрация: 03.10.2010
Сообщений: 173
Записей в блоге: 1
07.11.2010, 20:29  [ТС]     Точечный график функции #13
Цитата Сообщение от KpeHDeJIb Посмотреть сообщение
Ну тогда и все остальное надо будет переписывать, очевидно же. Можешь конечно с использованием GDI написать все, если хочешь.
и как это сделать?
KpeHDeJIb
 Аватар для KpeHDeJIb
56 / 56 / 3
Регистрация: 31.10.2010
Сообщений: 103
07.11.2010, 20:34     Точечный график функции #14
Цитата Сообщение от Астик Посмотреть сообщение
и как это сделать?
Руками, скорее всего. Создаешь окно Windows, получаешь его контекст, затем рисуешь. Не думаю что тебе подойдет этот способ. Лучше воспользуйся BC++ 3.1
Астик
 Аватар для Астик
11 / 11 / 0
Регистрация: 03.10.2010
Сообщений: 173
Записей в блоге: 1
07.11.2010, 22:28  [ТС]     Точечный график функции #15
Цитата Сообщение от Maxwe11 Посмотреть сообщение
в любой версии VS вы не скомпилируйте этот код, он будет компилироватся только в Turbo C++ 3.1
графика в студии это - GDI, DirectX, OpenGL
почему?

Добавлено через 8 минут
Цитата Сообщение от KpeHDeJIb Посмотреть сообщение
Руками, скорее всего. Создаешь окно Windows, получаешь его контекст, затем рисуешь.
в смысле это надо в консоле.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.11.2010, 22:36     Точечный график функции #16
Цитата Сообщение от Астик Посмотреть сообщение
почему?
потому что graphics.h это разработка Borland, рассчитанная под DOS или его эмуляцию

Добавлено через 2 минуты
Цитата Сообщение от Астик Посмотреть сообщение
в смысле это надо в консоле.
нет это не в консоли, а потому скачайте Турбо С++ 3.1, а строить график с использованием GDI, DirectX, OpenGL это довольно хлопотно и никто вам этого не будет делать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2010, 22:55     Точечный график функции
Еще ссылки по теме:

C++ Написать программу, которая выводит на экран точечный график функции
Как вывести на экран точечный график функции? C++
Как программно в консоли установить точечный шрифт, и его размер? C++

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

Или воспользуйтесь поиском по форуму:
Mencey
 Аватар для Mencey
145 / 92 / 7
Регистрация: 22.07.2010
Сообщений: 424
07.11.2010, 22:55     Точечный график функции #17
Через минут 15 на WinApi зделаю.

Добавлено через 10 минут
За еденицу принят отрезок в 5 пикселей.
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
#include <windows.h> 
#include <math.h> 
 
#define NUM    1000 
#define TWOPI (2 * 3.14159) 
#define MoveTo(hdc, x, y) MoveToEx(hdc, x, y, NULL)
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); 
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                    PSTR szCmdLine, int iCmdShow) 
{ 
    static char szAppName[] = "SineWave"; 
    HWND        hwnd; 
    MSG         msg;   
    WNDCLASSEX  wndclass; 
 
    wndclass.cbSize        = sizeof(wndclass); 
    wndclass.style         = CS_HREDRAW | CS_VREDRAW; 
    wndclass.lpfnWndProc   = WndProc; 
    wndclass.cbClsExtra    = 0; 
    wndclass.cbWndExtra    = 0; 
    wndclass.hInstance     = hInstance; 
    wndclass.hIcon         = LoadIcon(NULL, IDI_APPLICATION); 
    wndclass.hCursor       = LoadCursor(NULL, IDC_ARROW); 
    wndclass.hbrBackground =(HBRUSH) GetStockObject(WHITE_BRUSH); 
    wndclass.lpszMenuName  = NULL; 
    wndclass.lpszClassName = szAppName; 
    wndclass.hIconSm       = LoadIcon(NULL, IDI_APPLICATION); 
 
    RegisterClassEx(&wndclass); 
 
    hwnd = CreateWindow(szAppName, "Sine Wave Using Polyline", 
                                            WS_OVERLAPPEDWINDOW, 
                                            CW_USEDEFAULT, CW_USEDEFAULT, 
                                            CW_USEDEFAULT, CW_USEDEFAULT, 
                                            NULL, NULL, hInstance, NULL); 
 
    ShowWindow(hwnd, iCmdShow); 
    UpdateWindow(hwnd); 
 
    while(GetMessage(&msg, NULL, 0, 0)) 
    { 
        TranslateMessage(&msg); 
        DispatchMessage(&msg); 
    } 
    return msg.wParam; 
} 
 
LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) 
{ 
  static int  cxClient, cyClient, x0, y0; 
  HDC         hdc; 
    float       i;
  int         k; 
  PAINTSTRUCT ps; 
  POINT       pt[NUM]; 
 
    switch(iMsg) 
    { 
            case WM_SIZE: 
                cxClient = LOWORD(lParam); 
                cyClient = HIWORD(lParam); 
                x0 = cxClient / 2;
                y0 = cyClient / 2;
                return 0; 
 
            case WM_PAINT: 
                hdc = BeginPaint(hwnd, &ps); 
                
                MoveTo(hdc, 0, y0);
                LineTo(hdc, cxClient, y0);
                LineTo(hdc, cxClient - 10, y0 - 5);
                MoveTo(hdc, cxClient, y0);
                LineTo(hdc, cxClient - 10, y0 + 5);
                
                MoveTo(hdc, x0, 0);
                LineTo(hdc, x0, cyClient);
                MoveTo(hdc, x0, 0);
                LineTo(hdc, x0 - 5, 10);
                MoveTo(hdc, x0, 0);
                LineTo(hdc, x0 + 5, 10);
                
                for(i = -15.0f, k = 0; i <= 5; i += 0.1, k++) 
                { 
                    pt[k].x = x0 + i * 5;
                    pt[k].y = y0 + (int)(0.5*i*i+4*i-3) * 5; 
                } 
 
                Polyline(hdc, pt, 200); 
                return 0; 
 
            case WM_DESTROY: 
                PostQuitMessage(0); 
                return 0; 
    } 
 
 return DefWindowProc(hwnd, iMsg, wParam, lParam); 
}
Yandex
Объявления
07.11.2010, 22:55     Точечный график функции
Ответ Создать тему
Опции темы

Текущее время: 13:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru