Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 26

[C]Исправте код програми графика Си

12.03.2012, 21:55. Показов 3211. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#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 N(double N0, double a, double b, double t);
//Функция считывает соответсвующие параметры из потока f
//Возвращаемое значение число считанных параметров
int getParams(FILE * f,  
                          double & N0, double & a, double & b, 
                          double & tn, double & tk, double & dt); 
 
int main()
{
    double N0, a, b, tn, tk, t, dt;
    double CX, CY;//Масштабные коэффициенты
        FILE * f = fopen("data.txt","rb+");  
    //Получаем дискриптор окна кончоли
    HWND    hWnd = GetForegroundWindow();
        //Создаём PEN-ы для рисования
    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, 2, WHT);
 
    RECT    pRECT= {0};
    COORD   BGN  = {0};
    COORD   END  = {0};
        //Получаем размеры Client-области окна консоли
    GetClientRect(hWnd,&pRECT);
    
    //Получаем HDC
    HDC hDC = GetWindowDC(hWnd);
        long nParams = getParams(f, N0, a, b, tn, tk, dt);
        fclose(f);
        if(nParams == 0)
                printf("Error reading input data file\n");
        else
        {
                printf("\tPloting N(t) = %.0f*exp(-(%.0f)*(1 - exp(-(%0.2f)*t)))\r\n",N0,a,b);
                if(hDC)
                {
                        CX = (tk - tn)/(pRECT.right - pRECT.left);
                        CY = (N(N0,a,b,tn) - N(N0,a,b,tk))/(pRECT.bottom - pRECT.top);
                
                        t = tn;
                        BGN.X = t   /CX;
                        BGN.Y = N(N0,a,b,t)/CY + (pRECT.bottom - pRECT.top)/2;
                        SetBkMode(hDC,TRANSPARENT);
                        SetPoint (hDC, WPEN, BGN);
            while(t < tk)
            {
                                END.X = t   /CX;
                END.Y = N(N0,a,b,t)/CY + (pRECT.bottom - pRECT.top)/2;
                SetPoint (hDC,WPEN, END);
                                PlotLine(hDC, RPEN, BGN, END);
                BGN = END;
                t += dt;
            }
                        BGN.X = 0;
                        BGN.Y = 0/CY + (pRECT.bottom - pRECT.top)/2;
                        END.X = (pRECT.right - pRECT.left);
                        PlotLine(hDC, GPEN, BGN, END);
        }
        }
        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);
}
 
double N(double N0, double a, double b, double t)
{
        return N0*exp(-a*(1 - exp(-b*t)));
}
 
int getParams(FILE * f, 
                          double &N0, double &a, double &b, 
                          double &tn, double &tk, double &dt)
{
        int nParams = 0;
        char ch1, ch2;//Будет содержать в себе данные файла
        if(!f)
                printf("Error open input data file\n");
        else
        {
                if(!feof(f))
                if(fscanf(f,"%c%c = %lf\r\n",&ch1,&ch2,&N0))
                        nParams++;
                if(!feof(f))
                if(fscanf(f,"%c%c = %lf\r\n",&ch1,&ch2,&a))
                        nParams++;
                if(!feof(f))
                if(fscanf(f,"%c%c = %lf\r\n",&ch1,&ch2,&b))
                        nParams++;
                if(!feof(f))
                if(fscanf(f,"%c%c = %lf\r\n",&ch1,&ch2,&tn))
                        nParams++;
                if(!feof(f))
                if(fscanf(f,"%c%c = %lf\r\n",&ch1,&ch2,&tk))
                        nParams++;
                if(!feof(f))
                if(fscanf(f,"%c%c = %lf\r\n",&ch1,&ch2,&dt))
                        nParams++;
        }
        return nParams;
}
файл
date.txt

Code
1
2
3
4
5
6
N0 = 1024
a = -25
b = -0.25
tn = 0
tk = 12
dt = 0.1
Такие вот у меня ошибки:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Компілятор: Default compiler
Building Makefile: "D:\документи\Vova\системне програмування С\Ігора курсак\Makefile.win"
Виконання  make...
 
main.c:19: error: syntax error before '&' token
 
main.c:112: error: syntax error before '&' token
 
main.c: In function `getParams':
main.c:117: error: `f' undeclared (first use in this function)
main.c:117: error: (Each undeclared identifier is reported only once
main.c:117: error: for each function it appears in.)
main.c:122: error: `N0' undeclared (first use in this function)
main.c:125: error: `a' undeclared (first use in this function)
main.c:128: error: `b' undeclared (first use in this function)
main.c:131: error: `tn' undeclared (first use in this function)
 
main.c:134: error: `tk' undeclared (first use in this function)
main.c:137: error: `dt' undeclared (first use in this function)
 
make.exe: *** [main.o] Error 1
 
Виконання завершено
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.03.2012, 21:55
Ответы с готовыми решениями:

Исправте код
у меня постоянно ругается на переменную &quot;і&quot;, а я не знаю как это исправить. #include &lt;iostream&gt; #include &lt;iomanip&gt; ...

С++ исправте код
Помогите исправить код( Определить наибольший общий делитель трех натуральных чисел. #include&lt;IOSTREAM.H&gt; ...

исправте код
Исправте код, пожалуйста. у меня не сохраняет данные на файл и не загружает их( #include &lt;iostream&gt; #include &lt;string.h&gt; ...

12
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 26
14.03.2012, 22:02  [ТС]
Ап!!

Помогите..))
0
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 26
15.03.2012, 18:14  [ТС]
Вот скриншот ошибок с указателями..))
Миниатюры
[C]Исправте код програми графика Си  
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
15.03.2012, 18:21
В языке Си нет ссылок.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
15.03.2012, 18:33
motoo, вот подправил, + развил один ньюанс, теперь окно не нуждается в обновлении или перерисовке
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#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 N(double N0, double a, double b, double t);
//Ôóíêöèÿ ñ÷èòûâàåò ñîîòâåòñâóþùèå ïàðàìåòðû èç ïîòîêà f
//Âîçâðàùàåìîå çíà÷åíèå ÷èñëî ñ÷èòàííûõ ïàðàìåòðîâ
int getParams(FILE * f,  
                          double *N0, double *a, double *b, 
                          double *tn, double *tk, double *dt); 
 
int main()
{
    double N0, a, b, tn, tk, t, dt;
    double CX, CY;//Ìàñøòàáíûå êîýôôèöèåíòû
    FILE * f = fopen("data.txt","rb+");  
    //Ïîëó÷àåì äèñêðèïòîð îêíà êîí÷îëè
    HWND    hWnd = GetForegroundWindow();
    //Ñîçäà¸ì PEN-û äëÿ ðèñîâàíèÿ
    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, 2, WHT);
 
    RECT    pRECT= {0};
    COORD   BGN  = {0};
    COORD   END  = {0};
        //Ïîëó÷àåì ðàçìåðû Client-îáëàñòè îêíà êîíñîëè
    GetClientRect(hWnd,&pRECT);
    
    //Ïîëó÷àåì HDC
    HDC hDC = GetWindowDC(hWnd);
    long nParams = getParams(f, &N0, &a, &b, &tn, &tk, &dt);
    fclose(f);
    if(nParams == 0)
        printf("Error reading input data file\n");
    else
    {
        printf("\tPloting N(t) = %.0f*exp(-(%.0f)*(1 - exp(-(%0.2f)*t)))\r\n",N0,a,b);
        while(hDC)
        {
            CX = (tk - tn)/(pRECT.right - pRECT.left);
            CY = (N(N0,a,b,tn) - N(N0,a,b,tk))/(pRECT.bottom - pRECT.top);
            t = tn;
            BGN.X = t   /CX;
            BGN.Y = N(N0,a,b,t)/CY + (pRECT.bottom - pRECT.top)/2;
            SetBkMode(hDC,TRANSPARENT);
            SetPoint (hDC, WPEN, BGN);
            while(t < tk)
            {
                END.X = t   /CX;
                END.Y = N(N0,a,b,t)/CY + (pRECT.bottom - pRECT.top)/2;
                SetPoint (hDC,WPEN, END);
                PlotLine(hDC, RPEN, BGN, END);
                BGN = END;
                t += dt;
            }
            BGN.X = 0;
            BGN.Y = 0/CY + (pRECT.bottom - pRECT.top)/2;
            END.X = (pRECT.right - pRECT.left);
            PlotLine(hDC, GPEN, BGN, END);
            Sleep(50);
        }
    }
    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);
}
 
double N(double N0, double a, double b, double t)
{
        return N0*exp(-a*(1 - exp(-b*t)));
}
 
int getParams(FILE * f,  
                          double *N0, double *a, double *b, 
                          double *tn, double *tk, double *dt)
{
        int nParams = 0;
        char ch1, ch2;//Áóäåò ñîäåðæàòü â ñåáå äàííûå ôàéëà
        if(!f)
                printf("Error open input data file\n");
        else
        {
                if(!feof(f))
                if(fscanf(f,"%c%c = %lf\r\n",&ch1,&ch2,N0))
                        nParams++;
                if(!feof(f))
                if(fscanf(f,"%c%c = %lf\r\n",&ch1,&ch2,a))
                        nParams++;
                if(!feof(f))
                if(fscanf(f,"%c%c = %lf\r\n",&ch1,&ch2,b))
                        nParams++;
                if(!feof(f))
                if(fscanf(f,"%c%c = %lf\r\n",&ch1,&ch2,tn))
                        nParams++;
                if(!feof(f))
                if(fscanf(f,"%c%c = %lf\r\n",&ch1,&ch2,tk))
                        nParams++;
                if(!feof(f))
                if(fscanf(f,"%c%c = %lf\r\n",&ch1,&ch2,dt))
                        nParams++;
        }
        return nParams;
}
И да корректное название файла
Цитата Сообщение от motoo Посмотреть сообщение
datа.txt
Миниатюры
[C]Исправте код програми графика Си  
1
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 26
15.03.2012, 19:08  [ТС]
Вот еще какие то ошибки линкера ты не знаешь от чего они??
Миниатюры
[C]Исправте код програми графика Си  
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
15.03.2012, 19:11
В самое начало:
#pragma comment( lib, "gdi32.lib" )
0
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 26
15.03.2012, 19:16  [ТС]
Цитата Сообщение от lazybiz Посмотреть сообщение
В самое начало:
#pragma comment( lib, "gdi32.lib" )

Не помогло всьо те же ошибки...))
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
15.03.2012, 19:17
Какой компилятор/IDE ?
В общем тебе надо подключить библиотеку gdi32.lib
0
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 26
15.03.2012, 19:18  [ТС]
Цитата Сообщение от lazybiz Посмотреть сообщение
Какой компилятор/IDE ?
В общем тебе надо подключить библиотеку gdi32.lib
Dev-C++

помоги мне...))
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
15.03.2012, 19:38
Тебе надо залезть в опции проекта и добавить в строку подключаемых библиотек -lgdi32
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
15.03.2012, 19:41
Окно должно выглядеть примерно так как на изображении. Дописать надо в первую строку.
Миниатюры
[C]Исправте код програми графика Си  
0
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 26
15.03.2012, 21:36  [ТС]
Цитата Сообщение от lazybiz Посмотреть сообщение
Тебе надо залезть в опции проекта и добавить в строку подключаемых библиотек -lgdi32
спасибо всьо отлично...))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.03.2012, 21:36
Помогаю со студенческими работами здесь

Исправте код
Вот код, ниже задание.(язык СИ) #include &lt;stdio.h&gt; #include &lt;math.h&gt; int main(void){ void vvod_consile(float D) int M; ...

исправте код
помогите исправить код, плиз. #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; enum type_t{BOOK, JOURNAL}; ...

исправте код
Исправте код, плиз, по классам. #include &lt;iostream&gt; #include &lt;string.h&gt; #include &lt;windows.h&gt; using namespace std; class...

Исправте код, игра змейка
Помогити исправить код, программа останавливается в начале программы.

Начал изучать C++ WinAPI. Не работает код! Исправте пожалуйста
Начал изучать C++ Win API, но код который я написал(первый код) не работает в visual 2010 express.Нажимаю F5 комп что-то делает , а...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru