Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/26: Рейтинг темы: голосов - 26, средняя оценка - 4.88
 Аватар для insolent
829 / 353 / 64
Регистрация: 30.01.2009
Сообщений: 1,204

Error LNK2019 + упрощенный вариант консольной графики

11.08.2009, 03:49. Показов 5285. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программка из книги Лафоре "ОПП в С++", Глава 10.
Закинул я msoftcon.h и msoftcon.срр в папку к исходникам..
horse.cpp
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
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <ctime>
#include <cstdlib>
#include "msoftcon.h"
const int CPF = 5;
const int maxHorses = 7;
//////////////////////////////////////////////////////////////////////////
class track;
//////////////////////////////////////////////////////////////////////////
class horse
{
private:
    const track* ptrTrack;
    const int horse_number;
    float finish_time;
    float distance_run;
public:
    horse(const int n, const track* ptrT):
      horse_number(n),
      ptrTrack(ptrT),
      distance_run(0.0)
    {}
    ~horse()
    {}
    void display_horse(const float elapsed_time);
};
//////////////////////////////////////////////////////////////////////////
class track
{
private:
    horse* hArray[maxHorses];
    int total_horses;
    int horse_count;
    const float track_length;
    float elapsed_time;
public:
    track(float lenTr, int nH);
    ~track();
    void display_track();
    void run();
    float get_track_len() const;
};
//////////////////////////////////////////////////////////////////////////
void horse::display_horse(const float elapsed_time)
{
    set_cursor_pos(1 + int(distance_run*CPF),2 + horse_number*2);
    set_color(static_cast<color>(cBLUE + horse_number));
    char horse_char = '0' + static_cast<char>(horse_number);
    putch(' ');
    putch('\xDB');
    putch(horse_char);
    putch('\xDB');
    if(distance_run < ptrTrack->get_track_len() + 1.0/CPF)
    {
        if(rand()%3)
            distance_run = 0.2F;
        finish_time = elapsed_time;
    }
    else
    {
        int mins = int(finish_time)/60;
        int secs = int(finish_time) - mins*60;
        cout << "Время = " << mins << ":" << secs; 
    }
}
//////////////////////////////////////////////////////////////////////////
track::track(float lenTr, int nH):
    track_length(lenTr),
    total_horses(nH),
    horse_count(0),
    elapsed_time(0.0)
{
    init_graphics();
    total_horses = (total_horses > maxHorses) ? maxHorses : total_horses;
    for(int j = 0; j < total_horses;j++)
        hArray[j] = new horse(horse_count++,this);
 
    time_t aTime;
    srand(static_cast<unsigned>(time(&aTime)));
    display_track();
}
//////////////////////////////////////////////////////////////////////////
track::~track()
{
    for(int j = 0; j < total_horses;j++)
        delete hArray[j];
}
//////////////////////////////////////////////////////////////////////////
void track::display_track()
{
    clear_screen();
 
    for(int f = 0; f <= track_length;f++)
        for(int r = 1; r <= track_length*2 + 1;r++)
        {
            set_cursor_pos(f * CPF + 5, r);
            if(f == 0 || f == track_length)
                cout << '\xDB';
            else 
                cout << '\xB3';
        }
}
//////////////////////////////////////////////////////////////////////////
void track::run()
{
    while(!kbhit())
    {
        elapsed_time += 1.75;
        for(int j = 0; j < total_horses;j++)
            hArray[j]->display_horse(elapsed_time);
        wait(500);
    }
    getch();
    cout << endl;
}
//////////////////////////////////////////////////////////////////////////
float track::get_track_len() const
{
    return track_length;
}
//////////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[])
{
    float length;
    int total;
    cout << "\nВведите длину дистанции(от 1 до 12): ";
    cin >> length;
    cout << "\nВведите количество лошадей(от 1 до 7): ";
    cin >> total;
    track theTrack(length,total);
    theTrack.run();
    getchar();
    return 0;
}

msoftcon.h
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
//msoftcon.h
//Объявления функций консольной графики от Lafore
//используются консольные функции Windows 
 
#ifndef _INC_WCONSOLE    //этот файл не должен включаться
#define _INC_WCONSOLE    //дважды в тот же исходный файл
 
#include <windows.h>     //для консольных функций Windows
#include <conio.h>       //для kbhit(), getche()
#include <math.h>        //для sin, cos
 
enum fstyle { SOLID_FILL, X_FILL,      O_FILL, 
              LIGHT_FILL, MEDIUM_FILL, DARK_FILL };
 
enum color {
   cBLACK=0,     cDARK_BLUE=1,  cDARK_GREEN=2, DARK_CYAN=3, 
   cDARK_RED=4,  cDARK_MAGENTA=5, cBROWN=6,  cLIGHT_GRAY=7,
   cDARK_GRAY=8, cBLUE=9,         cGREEN=10,     cCYAN=11, 
   cRED=12,      cMAGENTA=13,     cYELLOW=14,    cWHITE=15 };
//---------------------------------------------------------
void init_graphics();
void set_color(color fg, color bg = cBLACK);
void set_cursor_pos(int x, int y);
void clear_screen();
void wait(int milliseconds);
void clear_line();
void draw_rectangle(int left, int top, int right, int bottom);                    
void draw_circle(int x, int y, int rad);
void draw_line(int x1, int y1, int x2, int y2);
void draw_pyramid(int x1, int y1, int height);
void set_fill_style(fstyle);
#endif /* _INC_WCONSOLE */

msoftcon.cpp
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
//msoftcon.cpp
//подпрограммы доступа к консольным функциям Windows 
 
//компилятор должен знать, где искать этот файл
//в MCV++, /Tools/Options/Directories/Include/type путь
 
#include "msoftcon.h"
HANDLE hConsole;         //поддержка консольного режима 
char fill_char;          //символ заполнения
//---------------------------------------------------------
void init_graphics()
   {
   COORD console_size = {80, 25};
   //открыть канал ввода/вывода на консоль
   hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,
                   FILE_SHARE_READ | FILE_SHARE_WRITE,
                   0L, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0L);
   //установить размер экрана 80x25 
   SetConsoleScreenBufferSize(hConsole, console_size);
   //текст белым по черному 
   SetConsoleTextAttribute( hConsole, (WORD)((0 << 4) | 15) );
 
   fill_char = '\xDB';  //заполнение по умолчанию
   clear_screen();
   }
//---------------------------------------------------------
void set_color(color foreground, color background)
   {
   SetConsoleTextAttribute( hConsole, 
                        (WORD)((background << 4) | foreground) );
   }  //конец setcolor()
 
/* 0  Черный          8  Темно-серый
   1  Темно-синий     9  Синий
   2  Темно-зеленый   10 Зеленый
   3  Темно-голубой   11 Алый
   4  Темно-красный   12 красный
   5  Темно-алый      13 алый
   6  Коричневый      14 Желтый
   7  Светло-серый    15 Белый
*/
//---------------------------------------------------------
void set_cursor_pos(int x, int y)
   {
   COORD cursor_pos;            //Начало в верхнем левом 
   cursor_pos.X = x - 1;        //Windows начинает с (0, 0)
   cursor_pos.Y = y - 1;        //мы начнем с (1, 1)
   SetConsoleCursorPosition(hConsole, cursor_pos);
   }
//---------------------------------------------------------
void clear_screen()
   {
   set_cursor_pos(1, 25);
   for(int j=0; j<25; j++)
      putch('\n');
   set_cursor_pos(1, 1);
   }
//---------------------------------------------------------
void wait(int milliseconds)
   {
   Sleep(milliseconds);
   }
//---------------------------------------------------------
void clear_line()                 //очистка до конца строки
   {                              //80 пробелов
   //.....1234567890123456789012345678901234567890
   //.....0........1.........2.........3.........4 
   cputs("                                        ");
   cputs("                                        ");
   }
//---------------------------------------------------------
void draw_rectangle(int left, int top, int right, int bottom) 
   {
   char temp[80];
   int width = right - left + 1;
 
   for(int j=0; j<width; j++)      //строка квадратов
      temp[j] = fill_char;   
   temp[j] = 0;                    //null
 
   for(int y=top; y<=bottom; y++)  //строковый стек 
      {
      set_cursor_pos(left, y);
      cputs(temp);
      }
   }
//---------------------------------------------------------
void draw_circle(int xC, int yC, int radius)
   {
   double theta, increment, xF, pi=3.14159;
   int x, xN, yN;
 
   increment = 0.8 / static_cast<double>(radius);
   for(theta=0;theta<=pi/2;theta+=increment)//1/4 
                                            //окружности
      {
      xF = radius * cos(theta);  
      xN = static_cast<int>(xF * 2 / 1); //пикселы не
                                         //квадратные :-(
      yN = static_cast<int>(radius * sin(theta) + 0.5);
      x = xC-xN;
      while(x <= xC+xN) //заполнить две горизонтальные линии
         {              //по одной на каждую ? окружности
         set_cursor_pos(x, yC-yN); putch(fill_char); //верх
         set_cursor_pos(x++,yC+yN); putch(fill_char); //низ
         }
      }  //конец for
   }
//---------------------------------------------------------
void draw_line(int x1, int y1, int x2, int y2)
   {
 
   int w, z, t, w1, w2, z1, z2;
   double xDelta=x1-x2, yDelta=y1-y2, slope;
   bool isMoreHoriz;
 
   if( fabs(xDelta) > fabs(yDelta) ) //еще горизонтальная
      {
      isMoreHoriz = true;
      slope = yDelta / xDelta;
      w1=x1; z1=y1; w2=x2, z2=y2;    //w=x, z=y 
      }
   else                              //еще вертикальная
      {
      isMoreHoriz = false;
      slope = xDelta / yDelta;
      w1=y1; z1=x1; w2=y2, z2=x2;    //w=y, z=x
      }
 
   if(w1 > w2)                       //если за w
      {
      t=w1; w1=w2; w2=t;             //   заменить (w1,z1)
      t=z1; z1=z2; z2=t;             //   на (w2,z2)
      }
   for(w=w1; w<=w2; w++)            
      {
      z = static_cast<int>(z1 + slope * (w-w1));
      if( !(w==80 && z==25) )  //убрать прокрутку на 80,25
         {
         if(isMoreHoriz)
            set_cursor_pos(w, z);
         else
            set_cursor_pos(z, w);
         putch(fill_char);
         }
      }
   }
//---------------------------------------------------------
void draw_pyramid(int x1, int y1, int height)
   {
   int x, y;
   for(y=y1; y<y1+height; y++)
      {
      int incr = y - y1;
      for(x=x1-incr; x<=x1+incr; x++)
         {
         set_cursor_pos(x, y);
         putch(fill_char);
         }
      }
   }
//---------------------------------------------------------
void set_fill_style(fstyle fs)
   {
   switch(fs)
      {
      case SOLID_FILL:  fill_char = '\xDB'; break;
      case DARK_FILL:   fill_char = '\xB0'; break;
      case MEDIUM_FILL: fill_char = '\xB1'; break;
      case LIGHT_FILL:  fill_char = '\xB2'; break;
      case X_FILL:      fill_char = 'X';    break;
      case O_FILL:      fill_char = 'O';    break;
      }
   }
//---------------------------------------------------------

Ошибки
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1>c:\myprojects\horse\horse\horse.cpp(54) : warning C4996: 'putch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _putch. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\conio.h(152): см. объявление 'putch'
1>c:\myprojects\horse\horse\horse.cpp(55) : warning C4996: 'putch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _putch. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\conio.h(152): см. объявление 'putch'
1>c:\myprojects\horse\horse\horse.cpp(56) : warning C4996: 'putch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _putch. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\conio.h(152): см. объявление 'putch'
1>c:\myprojects\horse\horse\horse.cpp(57) : warning C4996: 'putch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _putch. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\conio.h(152): см. объявление 'putch'
1>c:\myprojects\horse\horse\horse.cpp(111) : warning C4996: 'kbhit': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _kbhit. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\conio.h(147): см. объявление 'kbhit'
1>c:\myprojects\horse\horse\horse.cpp(118) : warning C4996: 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\conio.h(145): см. объявление 'getch'
1>Компоновка...
1>horse.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl set_color(enum color,enum color)" (?set_color@@YAXW4color@@0@Z) в функции "public: void __thiscall horse::display_horse(float)" (?display_horse@horse@@QAEXM@Z)
1>horse.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl set_cursor_pos(int,int)" (?set_cursor_pos@@YAXHH@Z) в функции "public: void __thiscall horse::display_horse(float)" (?display_horse@horse@@QAEXM@Z)
1>horse.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl init_graphics(void)" (?init_graphics@@YAXXZ) в функции "public: __thiscall track::track(float,int)" (??0track@@QAE@MH@Z)
1>horse.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl clear_screen(void)" (?clear_screen@@YAXXZ) в функции "public: void __thiscall track::display_track(void)" (?display_track@track@@QAEXXZ)
1>horse.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl wait(int)" (?wait@@YAXH@Z) в функции "public: void __thiscall track::run(void)" (?run@track@@QAEXXZ)

Варинги, я понимаю, от conio.h, а как проблему с error LNK2019 подскажите решить.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.08.2009, 03:49
Ответы с готовыми решениями:

Упрощенный вариант корзины покупателя
Подскажите, кто знает, как сделать очень примитивный вариант корзины покупателя, чтобы при нажатии кнопки &quot;в корзину&quot; название...

Упрощенный вариант программы sort системы UNIX по Кернигану и Ритчи
Не понимаю почему не происходит сортировка. Вот код #include &lt;stdio.h&gt; #include &lt;string.h&gt; #define MAXLINES 5000 //max lines to...

Error LNK1120, error LNK2019, error LNK2028, queue
// свойство класса Parser queue&lt;elem*&gt;* postfix = new queue&lt;elem*&gt;; // строка, из-за которой происходит ошибка ...

20
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
11.08.2009, 08:07
C++
1
2
3
4
#ifndef _INC_WCONSOLE    //этот файл не должен включаться
#define _INC_WCONSOLE    //дважды в тот же исходный файл
...
#endif /* _INC_WCONSOLE */
C++
1
2
3
4
//#ifndef _INC_WCONSOLE    //этот файл не должен включаться
//#define _INC_WCONSOLE    //дважды в тот же исходный файл
...
//#endif /* _INC_WCONSOLE */
1
 Аватар для insolent
829 / 353 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
11.08.2009, 10:44  [ТС]
accept, спс, что откликнулся, но, что с этим делать..?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
11.08.2009, 10:58
просто закомментируй строки условного включения
0
depict1
 Аватар для zim22
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
11.08.2009, 11:00
insolent, MSVC 2008 SP1. всё билдится без проблем.
единственный error был тут:
C++
1
2
3
4
5
6
void draw_rectangle(int left, int top, int right, int bottom) {
...
for(int j=0; j<width; j++)      //строка квадратов
      temp[j] = fill_char;   
   temp[j] = 0;                    //!!! j - undeclared identifier
...
0
 Аватар для insolent
829 / 353 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
11.08.2009, 11:06  [ТС]
accept, все осталось по старому..(
zim22, у меня тоже студия 2008, но без SP1..
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
11.08.2009, 11:14
закинул msoftcon.cpp в папку, надо чтобы он был в проекте, чтобы компиляцию проходил
0
depict1
 Аватар для zim22
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
11.08.2009, 11:14
Цитата Сообщение от insolent Посмотреть сообщение
у меня тоже студия 2008, но без SP1..
sp1 тут не причём.
попробуй сбилдить мой solution
Вложения
Тип файла: rar proj.rar (9.8 Кб, 101 просмотров)
0
 Аватар для insolent
829 / 353 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
11.08.2009, 11:36  [ТС]
Цитата Сообщение от zim22 Посмотреть сообщение
попробуй сбилдить мой solution
с твоим все Ок,
теперь
такое
Code
1
2
3
c:\myprojects\horse\horse\msoftcon.cpp(7) : warning C4627: #include "msoftcon.h": пропущен при поиске использования предкомпилированного заголовка
1>        Добавление директивы в "stdafx.h" или перестройка предкомпилированного заголовка
1>c:\myprojects\horse\horse\msoftcon.cpp(178) : fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "stdafx.h"" в источник.
с моим
Может, я как-то не так подключаю файлы к проекту?
0
depict1
 Аватар для zim22
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
11.08.2009, 11:40
Цитата Сообщение от insolent Посмотреть сообщение
Может, я как-то не так подключаю файлы к проекту?
отключи precompiled headers:

Properties-C/C++-Precompiled headers-Create|Use Precompiled Header: Not using Precompiled Headers
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
11.08.2009, 11:44
в dev-cpp пришлось

решить с j
cputs'ы заменить на puts'ы
включить для puts'ов <cstdio>
хедеры без изменений, убрал только stdafx.h
всё
1
 Аватар для insolent
829 / 353 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
11.08.2009, 11:53  [ТС]
у меня теперь
такое
Code
1
2
1>c:\myprojects\horse\horse\msoftcon.cpp(18) : error C2664: CreateFileW: невозможно преобразовать параметр 1 из 'const char [8]' в 'LPCWSTR'
1>        Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
такое.
0
depict1
 Аватар для zim22
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
11.08.2009, 11:56
Цитата Сообщение от insolent Посмотреть сообщение
у меня теперь такое
отключи поддержку Unicode
Propetries-Configuration Properties-General-Character Set:Use Multi-Byte Character Set
1
33 / 33 / 8
Регистрация: 17.09.2012
Сообщений: 193
21.09.2012, 21:13
Цитата Сообщение от zim22 Посмотреть сообщение
отключи precompiled headers:

Properties-C/C++-Precompiled headers-Create|Use Precompiled Header: Not using Precompiled Headers
У меня русский Microsoft Visual C++ 2010 Express. Не могу никак найти этот пункт в русской версии.
Прооблема такая же как у топикстартера.



Еще не совсем понимаю это: Что именно надо закомментировать, надо ли и для чего?
C#
1
2
3
4
5
6
//msoftcon.h
//Объявления функций консольной графики от Lafore
//используются консольные функции Windows 
 
#ifndef _INC_WCONSOLE    // этот файл не должен включаться
#define _INC_WCONSOLE    //дважды в тот же исходный файл
И тут странное:


Добавлено через 46 минут
Проект в данный момент выглядит так:


.cpp и .h кинул в папку с проектом. После чего слевой стороны пкм по "заголовочные файлы/файлы исходного кода >> добавить >> существующий элемент.
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
21.09.2012, 21:15
на счет таких вот вызовов:
C++
1
2
3
 hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,
                   FILE_SHARE_READ | FILE_SHARE_WRITE,
                   0L, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0L);
если явно используются ASCII (или ANSI, хз что правильно) строка, то и функцию желательно вызывать явно правильную. т.е.
CreateFileA ну или хотябы знать, что есть CreateFileA и CreateFileW и куча других функций с такими же суффиксами. Или же всю строку желательно оборавичать в спец макросы: TEXT("dsfrs"), _L("dsfs") и т.п.
А то проект может быть заточен под unicode, а тут раз, и отрубили поддержку ради компилябильности, не вдаваясь в детали.
1
33 / 33 / 8
Регистрация: 17.09.2012
Сообщений: 193
21.09.2012, 21:23
Спасибо за разъяснение!

Теперь остались траблы только по cpp
[img]http://s017.***********/i441/1209/c6/8d9f39e5edf6.png[/img]
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
21.09.2012, 21:26
блин. ну по русски написано же, возможно вы забыли добавить stdafx. добавте и посмотрите что будет. ошибки выводятся не просто так, чтобы отразить факт ошибки. типа есть ошибка, сами догадайтесь где и почему. есть описание и в данном случае вполне ясное.
0
33 / 33 / 8
Регистрация: 17.09.2012
Сообщений: 193
21.09.2012, 21:32
Так ведь есть он у меня:

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
// Test_Project.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include "msoftcon.h"
using namespace std;
 
///////////////////////////////////////////////////////////////////////
struct circle
{
    int xCo, yCo;
    int radius;
    color fillcolor;
    fstyle fillstyle;
};
///////////////////////////////////////////////////////////////////////
void circ_draw(circle c)
{
    set_color(c.fillcolor);
    set_fill_style(c.fillstyle);
    draw_circle(c.xCo, c.yCo, c.radius);
}
///////////////////////////////////////////////////////////////////////
 
int main ()
{
    system("chcp 1251 >nul");
 
    circle c1 = {15, 7, 5, cBLUE, X_FILL };
    circle c2 = {41, 12, 7, cRED, O_FILL };
    circle c3 = {65, 18, 4, cGREEN, MEDIUM_FILL };
    circ_draw(c1);
    circ_draw(c2);
    circ_draw(c3);
    set_cursor_pos(1, 25);
 
 return 0;
}
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
21.09.2012, 21:35
ругается на файл msoftcon.cpp
в описании ошибки это тоже есть. смотрите внимательнее.
1
33 / 33 / 8
Регистрация: 17.09.2012
Сообщений: 193
21.09.2012, 21:53
Добавил этот заголовочный в сpp, пропали ошибки и предупреждения. Правда на выходе ад и содомия:

[img]http://s016.***********/i336/1209/78/ec1cae5186fa.png[/img]
Листинг что скидывал выше - пример из книги. Хотя, после трех ошибок в cpp и h под этот пример, прилагаемых к книге, я не удивляюсь. =)

[img]http://s019.***********/i629/1209/1d/6b5148e5bec8.jpg[/img]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.09.2012, 21:53
Помогаю со студенческими работами здесь

Очистка консольной графики
Народ, подскажите, пожалуйста, какие есть функции для очистки графиков в консоле? P.S. system(&quot;cls&quot;) и clscr() не предлогать))

С++ библиотеки для консольной графики
Доброго времени суток. Какие в с++ есть библиотеки для создания консольной графики? Заранее спасибо.

Как создать "Упрощенный" вариант формы
Здравствуйте! У меня созрела необходимость создать, так называемый, &quot;Упрощенный&quot; вариант формы, как на скриншоте. Программа, в которой...

Существует ли библиотека для консольной графики в C++?
прочитал уже 3 книги по с++ (не визуал) и не нашёл ни слова о графике. в том же самом паскале есть модуль graph а здесь нету. Может есть...

Функция инициализации консольной графики от Лафоре
Доброго времени суток. Пытаюсь использовать( только обучения ради ) и изменить библиотеку консольной графики от Лафоре. Среди прочих...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru