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

Р. Лафоре "ООП в C++". Не компилируется пример с консольной графикой - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ эквивалентно? http://www.cyberforum.ru/cpp-beginners/thread948570.html
** = & привильно?
C++ Setlocale vs. SetConsoleCP В чём разница? Локаль определяет, в какой кодировке символы представляются в программе, а SetConsoleCP устанавливает ту же характеристику для связанной консоли, или?.. И почему при выполнении: setlocale(LC_CTYPE, ".866"); cout<<setlocale(LC_CTYPE,"")<<endl<<endl; В результате выводится: Russian_Russia.1251 ? http://www.cyberforum.ru/cpp-beginners/thread948553.html
Работа с изображениями C++
Здарвствуйте. Может глупый вопрос, но очень хочется разобраться. Возможно ли средствами языка С++, не прибегая к сторонним библиотекам (только STL то бишь) реализовать работу с изображением. Например взять bmp файл, запихнуть его в матрицу и выполнить его поворот на 90 градусов и сохранить в файл. Знаю, что используя сторонние библиотеки это сделать довольно не сложно( с тем же Qt например), но...
C++ Элементарные операции с динамических двусвязным списком
Всем доброго времени суток! Нужна ваша помощь! В общем задание: Сформировать динамический двусвязный список. Структура содержит фамилию спортсмена, вид спорта, количество очков. Добавлять новые записи так, чтобы информация по каждому виду спорта располагалась последовательно. Получилось только создать динамический двусвязный список и вывести его на экран, а вот последовательно информацию...
C++ Почему получается "pi.hProcess == NULL"? http://www.cyberforum.ru/cpp-beginners/thread948543.html
Добрый день. Имеется некоторый код. Он должен запускать определенный процесс с параметрами и подгружать нужные .dll. Все вроде бы хорошо, но почему-то постоянно ошибка "Failed to Create Process". В чем проблема, ребят? Консоль показывает следующее: 'samplauncher.exe': Loaded 'C:\Users\Dmitriy\Documents\Visual Studio 2010\Projects\samplauncher\Release\samplauncher.exe', Symbols loaded....
C++ Перегруженный конструктоор- так пойдет? Почему не пойдет и как бывает? class Cat { public: Cat(int initialAge=5); ~Cat(); int GetAge() const; // метод доступа const void SetAge (int age); void Meow(); подробнее

Показать сообщение отдельно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.09.2013, 09:44     Р. Лафоре "ООП в C++". Не компилируется пример с консольной графикой
Цитата Сообщение от mrtherains Посмотреть сообщение
Ошибка выскакивает на операторе "cputs".
Разве там ошибка? В студии просто предупреждения на cputs и putch, на это можно не обращать внимание (или заменить на _cputs и _putch). Но ошибка там одна есть. Вот с исправлением:
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
176
 // 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;
 
    int j;
    for( 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;
    }
}
//---------------------------------------------------------
 
Текущее время: 12:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru