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

Ошибка в коде - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Бинарные файлы http://www.cyberforum.ru/cpp-beginners/thread782745.html
2) Даны упорядоченные бинарные файлы "f.bin" и "g.bin", содержащие целые числа типа int. Например, f = <1,1,2,4,4,4,5> g = <1,1,3,4,6,6,7,7,7> 2A) создать упорядоченный бинарный файл "A.bin" с НЕ пересекающимися компонентами из f и g, то есть <2,3,6,6,7,7,7> 2B) создать упорядоченный бинарный файл "B.bin" c пересекающимися компонентами из f и g, то есть <1,4> 2С) создать упорядоченный...
C++ Бинарные файлы ( Вывести на экран содержимое каждого файла) Пользователь вводит 5 целых чисел. Положительные числа записать в файл "plus.bin", отрицательные - в "minus.bin". Закрыть эти файлы и снова открыть, но уже для чтения. Вывести на экран содержимое каждого файла. Помогите пж. написать код:)) http://www.cyberforum.ru/cpp-beginners/thread782744.html
Начальное значение для переменных-перечислений C++
enum {purchasing, selling, noAction} action; При таком объявлении, начальное значение action в 10 из 10 запусков - purchasing. Суть вопроса: Это закономерное поведение или всего лишь воля судьбы, а на самом деле Action - UB? И разрешена ли такая инициализация? enum {purchasing, selling, noAction} action = noAction; Добавлено через 1 час 44 минуты Эксперты С++, Вы где?
Не происходит замена в двумерном массиве C++
Не могу произвести замену цифр,с 0 1 2 на a b c; Подскажите в чем ошибка? #include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; int main(){
C++ Как вывести содержимое в TextBox? http://www.cyberforum.ru/cpp-beginners/thread782738.html
Visual Studio 2010, Visual C++. Имеется такой код для вычисления хэша SHA-1 #define UNICODE #include <stdio.h> #include <conio.h> #include <Windows.h> #include <WinCrypt.h> #include <string.h>
C++ set_terminate()/set_unexpected() Доброго времени суток! Занимаюсь по книге Дейтелей, и встретил задание на функции set_terminate()/set_unexpected(), в книге примеров не дано, искал в во всемогущем гугле про работу этих функций, но понятного примера так и не нашел... если кто знает, помогите разобраться.... Вот нашел пример, но программа все ровно заканчивается ошибкой... void f () { wcout << L"Не перехваченное... подробнее

Показать сообщение отдельно
IvanInanovich
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 113

Ошибка в коде - C++

10.02.2013, 20:08. Просмотров 1136. Ответов 8
Метки (Все метки)

Здравствуйте. В книге "ООП" Р. Лафоре, в главе 6 есть программка. Которая не хочет запускаться. Сперва набирал сам, после "долгих мучений" решил запустить оригинальный код посмотреть или запуститься - увы. Запускал в CB и в 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
//cirles.cpp
//круги в качестве объектов
#include "msoftcon.h"      // Для функций консольной графики
 
 
class circle //графический объект "круг"
{
    protected:
    int xCo , yCo; //координаты центра
    int radius;
    color fillcolor; //цвет
    fstyle fillstyle; // стиль заполнения
    public:             //установка заполнения круга
    void set(int x, int y, int r, color fc, fstyle fs)
    {
        xCo = x;
        yCo = y;
        radius = r;
        fillcolor = fc;
        fillstyle = fs;
    }
    void draw()  //рисование круга
    {
        set_color(fillcolor); //установка заполнения и
        set_fill_style(fillstyle); //стиля заполнения
        draw_circle(xCo,yCo,radius); // рисование круга
    }
};
int main()
{
    init_graphics(); //инициализация графики
    circle c1;          // создание кругов
    circle c2;
    circle c3;
        //установка атрибутов
    c1.set(15,7,5,cBLUE, X_FILL);
    c2.set(41,12,7,cRED, O_FILL);
    c3.set(65,18,4,cGREEN, MEDIUM_FILL);
    c1.draw();      //рисование кругов
    c2.draw();
    c3.draw();
    set_cursor_pos(1,25); //нижний левый угол
    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
//declarations for Lafore's console graphics functions
//uses Window's console functions
 
#ifndef _INC_WCONSOLE    //don't let this file be included
#define _INC_WCONSOLE    //twice in the same source file
 
#include <windows.h>     //for Windows console functions
#include <conio.h>       //for kbhit(), getche()
#include <math.h>        //for 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, cDARK_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
//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;
      }
   }
//--------------------------------------------------------------

Ошибки в CB:
Код
obj\Debug\main.o||In function `main':|
\Tetsnaf\main.cpp|30|undefined reference to `init_graphics()'|
\Tetsnaf\main.cpp|43|undefined reference to `set_cursor_pos(int, int)'|
\Tetsnaf\main.cpp|22|undefined reference to `set_color(color, color)'|
\Tetsnaf\main.cpp|23|undefined reference to `set_fill_style(fstyle)'|
\Tetsnaf\main.cpp|24|undefined reference to `draw_circle(int, int, int)'|
||=== Build finished: 5 errors, 0 warnings ===|
Ошибки в VS:
Код
1>------ Build started: Project: MyFirsProgram, Configuration: Debug Win32 ------
1>  Redaktor.cpp
1>Redaktor.obj : error LNK2005: _main already defined in Vararg.obj
1>Redaktor.obj : error LNK2019: unresolved external symbol "void __cdecl set_cursor_pos(int,int)" (?set_cursor_pos@@YAXHH@Z) referenced in function _main
1>Redaktor.obj : error LNK2019: unresolved external symbol "void __cdecl init_graphics(void)" (?init_graphics@@YAXXZ) referenced in function _main
1>Redaktor.obj : error LNK2019: unresolved external symbol "void __cdecl draw_circle(int,int,int)" (?draw_circle@@YAXHHH@Z) referenced in function "public: void __thiscall circle::draw(void)" (?draw@circle@@QAEXXZ)
1>Redaktor.obj : error LNK2019: unresolved external symbol "void __cdecl set_fill_style(enum fstyle)" (?set_fill_style@@YAXW4fstyle@@@Z) referenced in function "public: void __thiscall circle::draw(void)" (?draw@circle@@QAEXXZ)
1>Redaktor.obj : error LNK2019: unresolved external symbol "void __cdecl set_color(enum color,enum color)" (?set_color@@YAXW4color@@0@Z) referenced in function "public: void __thiscall circle::draw(void)" (?draw@circle@@QAEXXZ)
1>D:\Documents and Settings\Максим\мои документы\visual studio 2010\Projects\MyFirsProgram\Debug\MyFirsProgram.exe : fatal error LNK1120: 5 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Добавлено через 23 часа 50 минут
Нашел информацию что нужно юникод отключить. Сделал - не работает.
Возможно кто-то может хотя бы подсказать что это за ошибки ?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru