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

Не компилируется задача из Лафоре - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Lar4ik
43 / 41 / 20
Регистрация: 27.02.2013
Сообщений: 256
13.01.2014, 21:30     Не компилируется задача из Лафоре #1
Помогите пожалуйста разбораться почему компилятор ругается:
1>L.obj : error LNK2019: unresolved external symbol "void __cdecl draw_circle(int,int,int)" (?draw_circle@@YAXHHH@Z) referenced in function "void __cdecl circ_draw(struct circle)" (?circ_draw@@YAXUcircle@@@Z) .....
1>C:\Users\Администратор\Documents\Visual Studio 2010\Projects\LLLL\Debug\LLLL.exe : fatal error LNK1120: 5 unresolved externals
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
#include "msoftcon.h" // для графических функций 
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() 
{ 
init_graphics(); // инициализация графики 
// создание кругов 
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; 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2014, 21:30     Не компилируется задача из Лафоре
Посмотрите здесь:

C++ Лафоре задача по классам
C++ Задача из Лафоре
C++ Р. Лафоре "ООП в C++". Не компилируется пример с консольной графикой
Задача из Лафоре C++
Лафоре. Глава 11. Задача 2 C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,175
Завершенные тесты: 1
13.01.2014, 21:36     Не компилируется задача из Лафоре #2
Не подключена библиотека, содержащая реализацию
draw_circle(c.xCo, c.yCo, c.radius); // рисование круга
Я что-то ничего не знаю о наличии таких функций в VS
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,786
13.01.2014, 22:09     Не компилируется задача из Лафоре #3
Ошибка в коде
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.01.2014, 22:36     Не компилируется задача из Лафоре #4
Цитата Сообщение от zss Посмотреть сообщение
Я что-то ничего не знаю о наличии таких функций в VS
Там кроме msoftcon.h ещё и 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
//msoftcon.cpp
//provides routines to access Windows console functions
 
//compiler needs to be able to find this file
//in MCV++, /Tools/Options/Directories/Include/type path name
 
#include "msoftcon.h"
HANDLE hConsole;         //console handle
char fill_char;          //character used for fill
//--------------------------------------------------------------
void init_graphics()
   {
   COORD console_size = {80, 25};
   //open i/o channel to console screen
   hConsole = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,
                   FILE_SHARE_READ | FILE_SHARE_WRITE,
                   0L, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0L);
   //set to 80x25 screen size
   SetConsoleScreenBufferSize(hConsole, console_size);
   //set text to white on black
   SetConsoleTextAttribute( hConsole, (WORD)((0 << 4) | 15) );
 
   fill_char = '\xDB';  //default fill is solid block
   clear_screen();
   }
//--------------------------------------------------------------
void set_color(color foreground, color background)
   {
   SetConsoleTextAttribute( hConsole, 
                        (WORD)((background << 4) | foreground) );
   }  //end setcolor()
 
/* 0  Black          8  Dark gray
   1  Dark blue      9  Blue
   2  Dark green     10 Green
   3  Dark cyan      11 Cyan
   4  Dark red       12 Red
   5  Dark magenta   13 Magenta
   6  Brown          14 Yellow
   7  Light gray     15 White
*/
//--------------------------------------------------------------
void set_cursor_pos(int x, int y)
   {
   COORD cursor_pos;              //origin in upper left corner
   cursor_pos.X = x - 1;          //Windows starts at (0, 0)
   cursor_pos.Y = y - 1;          //we start at (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()                    //clear to end of line
   {                                 //80 spaces
   //.....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++)      //string of squares
      temp[j] = fill_char;   
   temp[j] = 0;                    //null
 
   for(int y=top; y<=bottom; y++)  //stack of strings 
      {
      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)  //quarter circle
      {
      xF = radius * cos(theta);  
      xN = static_cast<int>(xF * 2 / 1); //pixels not square
      yN = static_cast<int>(radius * sin(theta) + 0.5);
      x = xC-xN;
      while(x <= xC+xN)          //fill two horizontal lines
         {                       //one for each half circle
         set_cursor_pos(x,   yC-yN); putch(fill_char);  //top
         set_cursor_pos(x++, yC+yN); putch(fill_char);  //bottom
         }
      }  //end 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) ) //more horizontal
      {
      isMoreHoriz = true;
      slope = yDelta / xDelta;
      w1=x1; z1=y1; w2=x2, z2=y2;    //w=x, z=y 
      }
   else                              //more vertical
      {
      isMoreHoriz = false;
      slope = xDelta / yDelta;
      w1=y1; z1=x1; w2=y2, z2=x2;    //w=y, z=x
      }
 
   if(w1 > w2)                       //if backwards w
      {
      t=w1; w1=w2; w2=t;             //   swap (w1,z1)
      t=z1; z1=z2; z2=t;             //   with (w2,z2)
      }
   for(w=w1; w<=w2; w++)            
      {
      z = static_cast<int>(z1 + slope * (w-w1));
      if( !(w==80 && z==25) )        //avoid scroll at 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;
      }
   }
//--------------------------------------------------------------


Добавлено через 4 минуты
Lar4ik, в проекте этот файл (msoftcon.cpp) присутствует?
Lar4ik
43 / 41 / 20
Регистрация: 27.02.2013
Сообщений: 256
14.01.2014, 08:27  [ТС]     Не компилируется задача из Лафоре #5
msoftcon.h и msoftcon.cpp есть. находятся в папке include
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,786
14.01.2014, 08:48     Не компилируется задача из Лафоре #6
Lar4ik, по той сылке, что я дал написано же что делать:

Project - > "имя проекта" property... -> configuration Properties -> General - > Сharacter set -> Use Multi-Bite Charakcter set.

Цитата Сообщение от nonedark2008 Посмотреть сообщение
а в функции draw_rectangle в начале приписать int j; и убрать int в цикле for ниже.
Цитата Сообщение от IvanInanovich Посмотреть сообщение
Перед cputs поставил нижний слеш (_cputs) и заработало.
Пробуйте
Lar4ik
43 / 41 / 20
Регистрация: 27.02.2013
Сообщений: 256
14.01.2014, 10:15  [ТС]     Не компилируется задача из Лафоре #7
Ev_Hyper, я может туплю сильно, но где у меня в задаче draw_rectangle и cputs?

Добавлено через 7 минут
все, дошло.
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,786
14.01.2014, 10:21     Не компилируется задача из Лафоре #8
помогло?
Lar4ik
43 / 41 / 20
Регистрация: 27.02.2013
Сообщений: 256
14.01.2014, 10:28  [ТС]     Не компилируется задача из Лафоре #9
но даже после всех этих действий ошибки те же.
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,786
14.01.2014, 10:29     Не компилируется задача из Лафоре #10
Project - > "имя проекта" property... -> configuration Properties -> General - > Сharacter set -> Use Multi-Bite Charakcter set.

сделали?
Lar4ik
43 / 41 / 20
Регистрация: 27.02.2013
Сообщений: 256
14.01.2014, 10:34  [ТС]     Не компилируется задача из Лафоре #11
да.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.01.2014, 11:02     Не компилируется задача из Лафоре #12
Цитата Сообщение от Lar4ik Посмотреть сообщение
msoftcon.h и msoftcon.cpp есть. находятся в папке include
В какой папке include? В папке проекта должны быть, и msoftcon.cpp должен присутствовать в проекте (быть виден в обозревателе решений, в файлах исходного кода).
Миниатюры
Не компилируется задача из Лафоре  
Lar4ik
43 / 41 / 20
Регистрация: 27.02.2013
Сообщений: 256
14.01.2014, 11:45  [ТС]     Не компилируется задача из Лафоре #13
у меня окно имеет такой вид:
Миниатюры
Не компилируется задача из Лафоре  
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.01.2014, 11:48     Не компилируется задача из Лафоре #14
Цитата Сообщение от Lar4ik Посмотреть сообщение
у меня окно имеет такой вид:
И что? 12 пост читайте.
Lar4ik
43 / 41 / 20
Регистрация: 27.02.2013
Сообщений: 256
14.01.2014, 12:01  [ТС]     Не компилируется задача из Лафоре #15
действительно, файлы были не в той папке. Спасибо. Все заработало
Lar4ik
43 / 41 / 20
Регистрация: 27.02.2013
Сообщений: 256
14.01.2014, 12:07  [ТС]     Не компилируется задача из Лафоре #16
Вот так:
Миниатюры
Не компилируется задача из Лафоре  
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.01.2014, 12:16     Не компилируется задача из Лафоре #17
Цитата Сообщение от Lar4ik Посмотреть сообщение
Вот так:
Для порядка, перетащите msoftcon.h в Header Files. Где он находится в обозревателе решений - по сути не важно (можно вообще убрать), главное, чтобы был в папке проекта.
Drusha
6 / 6 / 0
Регистрация: 16.07.2013
Сообщений: 74
06.02.2014, 15:28     Не компилируется задача из Лафоре #18
У меня та же беда
Миниатюры
Не компилируется задача из Лафоре  
Drusha
6 / 6 / 0
Регистрация: 16.07.2013
Сообщений: 74
06.02.2014, 15:49     Не компилируется задача из Лафоре #19
Я обычно Dev-cpp пользуюсь, но там тоже подключить так и не получилось, впрочем как и в VS
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2014, 16:43     Не компилируется задача из Лафоре
Еще ссылки по теме:

C++ Лафоре Не компилируется пример
C++ Очередь (задача из Лафоре)
Не компилируется листинг "Передача по ссылке аргументов" Р.Лафоре C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.02.2014, 16:43     Не компилируется задача из Лафоре #20
Цитата Сообщение от Drusha Посмотреть сообщение
У меня та же беда
Мой вам совет: создавайте Пустой проект (Общие - Пустой).
Yandex
Объявления
06.02.2014, 16:43     Не компилируется задача из Лафоре
Ответ Создать тему
Опции темы

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