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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
profan_Artem
4 / 4 / 0
Регистрация: 17.02.2009
Сообщений: 18
#1

enum - C++

19.03.2009, 21:17. Просмотров 1687. Ответов 6
Метки нет (Все метки)

всем здрасти, помогите разобраться с функцией enum
к примеру есть код

C++
1
2
3
4
5
6
7
8
9
10
enum direction
{
    RIGHT   = 0x1,
    LEFT    = 0x2,
    UP      = 0x3,
    DOWN    = 0x4,
    DEFAULT = 0x5
};
 
static direction move = DEFAULT;
прокоментируйте пожалуйста, не понимаю что привсваивается значениям
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2009, 21:17     enum
Посмотрите здесь:

enum - C++
enum alfa{a,b,c,d,e,f,g,h,i,k,l,m,n,o,p,q,r,s,t,v,x,y,z}; for(int i=strlen(text);i>=0;i--) { if(isalnum((unsigned char)text)) ...

Enum - C++
Доброго времени суток Интересует что значит следующий код: enum Colors { RED, GREEN, BLUE };

enum - C++
#include <iostream> using std::cout; using std::endl; enum {red, green, blue}; int main() { cout<<sizeof(red)<<endl; ...

enum - C++
Ку! Имеется некое множество enum SomeSet { elem_1, elem_2, elem_3, // ... }; Это множество активно...

enum - C++
enum __Enumm { A a; B b; C c; }; Пишет ошибку. Объясните, пожалуйста, как правильно и как работать с enum'ами?

enum - C++
есть (в header.h) enum valut{dol, grn ,rub}; в другом cpp функция convert(valut v) . В еще другом файле функция main , оглашение int v , ...

Enum increment - C++
Добрый вечер, // main.cpp #include "Direction.h" A::B::Direction dir = A::B::Direction::LEFT; int main() { ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
19.03.2009, 21:23     enum #2
1, 2, 3, 4, 5, соответственно, в 16ричной системе счисления. direction move = 5.
enum - это константа перечисления, а не функция.
profan_Artem
4 / 4 / 0
Регистрация: 17.02.2009
Сообщений: 18
19.03.2009, 21:28  [ТС]     enum #3
Цитата Сообщение от Nestor Посмотреть сообщение
direction move = 5.
enum - это константа перечисления, а не функция.
direction move = 5., непонятно, move - новый обьект или это выражение можно было заменить move = 5?
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
19.03.2009, 21:35     enum #4
Смотря что ты хочешь сделать. Если надо создать новый объект, то enum здесь вообще не при чем. А если присвоить переменной move какое-то значение, тогда нужно определить ее, например, как static int move = DEFAULT, а то у тебя с ошибкой записано.
profan_Artem
4 / 4 / 0
Регистрация: 17.02.2009
Сообщений: 18
19.03.2009, 21:41  [ТС]     enum #5
Цитата Сообщение от Nestor Посмотреть сообщение
Смотря что ты хочешь сделать. Если надо создать новый объект, то enum здесь вообще не при чем. А если присвоить переменной move какое-то значение, тогда нужно определить ее, например, как static int move = DEFAULT, а то у тебя с ошибкой записано.
насчет ошибки не уверен... потомучто компилится
может читал задача о траэктории черепахи, добрые люди написали код
собственно вот он

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
177
178
179
180
181
182
183
184
185
186
187
include <iostream.h>
 
enum direction
{
    RIGHT   = 0x1,
    LEFT    = 0x2,
    UP      = 0x3,
    DOWN    = 0x4,
    DEFAULT = 0x5
};
 
static direction move = DEFAULT;
static int store_i = 0;
static int store_j = 0;
 
void movePosition( int a[][15], int move, int pen)
{
    int i= store_i, j = store_j;
    int shift = 0; // ñìåùåГ*ГЁГҐ
 
    cout<< "input shift : "<<endl;
    cin>> shift;
    cout<<"i before "<< store_i<<"j before"<<store_j<<endl;
 
    switch(move)
    {
        case LEFT:
        {
            for( j; j > store_j - shift; j--)
            {
                if (1 == pen) a[store_i][j-1] = 1;
            }
            store_j = j;
            break;
        }
        case DOWN:
        {
            for( i; i < store_i + shift; i++)
            {
                if (1 == pen) a[i+1][store_j] = 1;
            }
            store_i = i;
            break;
        }
        case UP:
        {
            for( i; i > store_i - shift; i--)
            {
                if (1 == pen) a[i-1][store_j] = 1;
            }
            store_i = i;
            break;
        }
        case RIGHT:
        default:
        {
            for( j; j < shift + store_j; j++)
            {
                if (1 == pen) a[store_i][j+1] = 1;
            }
            store_j = j;
            break;
        }
    }
 
        cout<<"i"<< store_i<<"j"<<store_j<<endl;
}
 
void printArr(int a[][15])
{
    for ( int i = 0; i < 15; i++)
    {
        for ( int k = 0; k < 15; k++)
        {
            cout<< a[i][k];
 
        }
        cout<< endl;
    }
}
 
int main()
{
 
    const int n =15, m =15;
    char comand;
    int floor[n][m] = {0};
 
    int pen = 0;
 
 
    cout<<"innput comand to turtle:"<<endl;
    while((comand = cin.get()) != '9')
    {
        switch (comand)
        {
           case '1':        // ïåðî ГўГ*ГЁГ§
               {
                    pen = 1;
                    break;
               }
           case '2':       // ïåðî ââåðõ
               {
                    pen = 0;
                    break;
               }
           case '3':        // ïîâîðîò âëåâî
               {
                   switch(move)
                   {
                        case LEFT:
                        {
                            move = DOWN;
                            break;
                        }
                        case DOWN:
                        {
                            move = RIGHT;
                            break;
                        }
                        case UP:
                        {
                            move = LEFT;
                            break;
                        }
                        case RIGHT:
                        default:
                        {
                            move = UP;
                            break;
                        }
                   }
                   break;
               }
           case '4':          // ïîâîðîò ГўГЇГ°Г*ГўГ®
               {
                   switch(move)
                   {
                        case LEFT:
                        {
                            move = UP;
                            break;
                        }
                        case RIGHT:
                        default:
                        {
                            move = DOWN;
                            break;
                        }
                        case DOWN:
                        {
                            move = LEFT;
                            break;
                        }
                        case UP:
                        {
                            move = RIGHT;
                            break;
                        }
                   }
                   break;
               }
            case '5':
                {
                    movePosition (floor, move, pen);
                    break;
                }
            case '6':       // ГЇГҐГ·Г*ГІГј Г¬Г*Г±Г±ГЁГўГ*
                {
                    printArr(floor);
                    break;
                }
            case '\n': // ìåòêè äëÿ cin.get - Г·ГЁГІГ*ГҐГІ ГЇГ® îäГ*îìó ñèìâîëó,ââîä òîæå ñèìâîë!!!
            case ' ':
            case '\t':
                {
                    break;
                }
            default:
                {
                    cout<< "you wrong, input correct data "<<endl;
                    break;
                }
        }
    }
    return 0;
}
но у добрых людей не хватило духу на коменты, так я разбираюсь
Alexiski
Любитель давать советы
339 / 131 / 2
Регистрация: 12.01.2009
Сообщений: 511
19.03.2009, 23:00     enum #6
Никакой ошибки. enum фактически задает новый тип (direction).
А в конце объявляется переменная move этого типа.
Переменная move может принимать значения, перечисленные в enum.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2009, 15:28     enum
Еще ссылки по теме:

Enum в классе - C++
Добрый день, форум! Возникла такая задачка: Есть класс, в классе есть функция, которая принимает 1 аргумент типа int. В зависимости...

enum: цифры - C++
А можно в перечислениях использовать цифры? Например: enum chislo {1, 2, 3, 4}(только так не работает:gmad:) Просто есть файл, там...

enum и массив - C++
На сколько я знаю, при инициализации массива требуется, чтобы в квадратных скобках было указано константное число. А почему через enum...

Уникальный ID enum - C++
Нужно создать класс &quot;Игрок&quot; в котором есть поле ID, где задется уникальный пятизначный номер. Подскажите, как это сделать используя...

обратный enum - C++
привет есть enum color {q,w,r,t,w,e,y,q}; как вернуть название (q,w,..) по номеру типа color c; cout&lt;&lt;c(3) //вывод &quot;r&quot;...


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

Или воспользуйтесь поиском по форуму:
Night_Light
17 / 17 / 2
Регистрация: 14.02.2009
Сообщений: 86
20.03.2009, 15:28     enum #7
Думаю тебе в первую очередь стоит разобраться зачем enum нужен вообще. Ответом будет: чтобы избежать появления в коде "магических чисел", которые являются признаком плохого кода.
Yandex
Объявления
20.03.2009, 15:28     enum
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru