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

enum: цифры - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
marina2
Рожденная для битвы
 Аватар для marina2
268 / 48 / 4
Регистрация: 08.11.2009
Сообщений: 1,016
24.07.2011, 14:01     enum: цифры #1
А можно в перечислениях использовать цифры?
Например:
C++
1
enum chislo {1, 2, 3, 4}
(только так не работает)

Просто есть файл, там записано длинное число, и каждую циферку нужно записать в ячейку массива...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2011, 14:01     enum: цифры
Посмотрите здесь:

C++ enum
enum C++
C++ enum
enum C++
C++ enum
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
24.07.2011, 14:05     enum: цифры #2
marina2, чем строка не угодила?

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
 
int main()
{
    std::string Line ( "123456789123456789" );
 
    int * ArrayNumbers = new int [ Line.length() - 1 ];
 
    for ( int index = 0; index < Line.length(); index++ )
        ArrayNumbers [ index ] = Line [ index ] - 48;
 
    delete []ArrayNumbers;
 
    std::cin.get();
    return 0;
}
marina2
Рожденная для битвы
 Аватар для marina2
268 / 48 / 4
Регистрация: 08.11.2009
Сообщений: 1,016
24.07.2011, 14:07  [ТС]     enum: цифры #3
Цитата Сообщение от Mиxaил Посмотреть сообщение
marina2, чем строка не угодила?
Да угодила

Просто придется символы переводить в числа

Я просто спросила: это один из вариантов решения задачи
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
24.07.2011, 14:08     enum: цифры #4
marina2, перечисления позволяют задавать цифрам строковые идентификаторы, вопрос: как оносятся перечисления к Вашей задаче?
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
24.07.2011, 14:11     enum: цифры #5
вашим вариантом enum нельзя.
C++
1
enum тип_перечисления { список_констант } список_переменных
marina2
Рожденная для битвы
 Аватар для marina2
268 / 48 / 4
Регистрация: 08.11.2009
Сообщений: 1,016
24.07.2011, 14:13  [ТС]     enum: цифры #6
Mиxaил, поясните, пожалуйста про 48
Цитата Сообщение от Mиxaил Посмотреть сообщение
Line [ index ] - 48
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
24.07.2011, 14:17     enum: цифры #7
48 это ASCII код символа '0'
У символа '1' код 49
и т. д.
То есть
'0' - 48 == 0
'1' - 48 == 1
...
'9' - 48 == 9

Добавлено через 31 секунду
Но я бы вычитал не 48, а именно '0'
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
24.07.2011, 14:19     enum: цифры #8
вот еще один аналог
C++
1
ArrayNumbers [ index ] = static_cast < int > ( Line [ index ] ) - static_cast < int > ( '0' ); // или ( int ) ( от char )
дело в том, что переменные типа char имеют порядковый номер ( естественно целого типа ). Чтобы перевести символьное представление числа в "нормальный" вид целого типа, то нужно от значения в таблице отнять порядковый номер "0" - это 48... Отсюда имеем.
marina2
Рожденная для битвы
 Аватар для marina2
268 / 48 / 4
Регистрация: 08.11.2009
Сообщений: 1,016
24.07.2011, 14:20  [ТС]     enum: цифры #9
grizlik78, спасибо, вот это мне и нужно было
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
24.07.2011, 14:21     enum: цифры #10
Цитата Сообщение от Mиxaил Посмотреть сообщение
вот еще один аналог
А мне не очень понятно, зачем здесь явное преобразование к int. Всё-таки char это целочисленный тип.
marina2
Рожденная для битвы
 Аватар для marina2
268 / 48 / 4
Регистрация: 08.11.2009
Сообщений: 1,016
24.07.2011, 14:23  [ТС]     enum: цифры #11
Цитата Сообщение от grizlik78 Посмотреть сообщение
Всё-таки char это целочисленный тип.
Можете подробней, не очень догоняю(
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
24.07.2011, 14:24     enum: цифры #12
grizlik78, да просто, чтобы показать, что преобразовываем тип, для наглядности... Сам, конечно, такое не использую и не пропагандирую...
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
24.07.2011, 14:24     enum: цифры #13
Вообще то enum созданный ваш перечисленный тип и так воспринимает как числа
C++
1
2
    enum numbers {one=1,two,three,four,five=5};
    cout<<four; //будет выведено 4, а не "four".
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
24.07.2011, 14:26     enum: цифры #14
marina2, используем его порядковый номер в таблице ASCII с небольшим изменением ( - 48 )

Добавлено через 56 секунд
Gepar, речь не об этом шла...
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
24.07.2011, 14:27     enum: цифры #15
Цитата Сообщение от marina2 Посмотреть сообщение
Можете подробней, не очень догоняю(
В char идёт хранение в виде кода символа по таблице символов вашего ПК, потому то Вы и можете присвоить значение переменной char переменой типа int. Пример:
C++
1
2
3
    char symbol='x';
    int a=symbol;
    cout<<a; //будет выведено 120 потому что по таблице ASCII символов код у символа x =120
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
24.07.2011, 14:27     enum: цифры #16
Цитата Сообщение от marina2 Посмотреть сообщение
Всё-таки char это целочисленный тип.
Можете подробней, не очень догоняю(
Что именно? Что char это такой же тип, как и int, только с минимально возможным размером, неопределённой "знаковостью" и особой интерпретацией при вводе/выводе?
marina2
Рожденная для битвы
 Аватар для marina2
268 / 48 / 4
Регистрация: 08.11.2009
Сообщений: 1,016
24.07.2011, 14:27  [ТС]     enum: цифры #17
Цитата Сообщение от Mиxaил Посмотреть сообщение
marina2, используем его порядковый номер в таблице ASCII с небольшим изменением ( - 48 )
Только это имелось в виду? А то я удивилась
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
24.07.2011, 14:29     enum: цифры #18
marina2, ну да, тут все просто =)
LosAngeles
Заблокирован
24.07.2011, 14:37     enum: цифры #19
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
enum Alert { green, yellow, election, red }; // traditional enum
 
    enum class Color { red, blue };   // scoped and strongly typed enum
                                      // no export of enumerator names into enclosing scope
                                      // no implicit conversion to int
    enum class TrafficLight { red, yellow, green };
 
    Alert a = 7;              // error (as ever in C++)
    Color c = 7;              // error: no int->Color conversion
 
    int a2 = red;             // ok: Alert->int conversion
    int a3 = Alert::red;      // error in C++98; ok in C++0x
    int a4 = blue;            // error: blue not in scope
    int a5 = Color::blue;     // error: not Color->int conversion
 
    Color a6 = Color::blue;   // ok
C++
1
2
3
4
5
6
7
8
9
enum class Color : char { red, blue };  // compact representation
 
    enum class TrafficLight { red, yellow, green };  // by default, the underlying type is int
 
    enum E { E1 = 1, E2 = 2, Ebig = 0xFFFFFFF0U };   // how big is an E?
                                                     // (whatever the old rules say;
                                                     // i.e. "implementation defined")
 
    enum EE : unsigned long { EE1 = 1, EE2 = 2, EEbig = 0xFFFFFFF0U };   // now we can be specific
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2011, 14:41     enum: цифры
Еще ссылки по теме:

C++ Enum
enum C++
C++ enum

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

Или воспользуйтесь поиском по форуму:
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
24.07.2011, 14:41     enum: цифры #20
Mиxaил, да marina2 по-моему сама не знает чего хочет.
На всякий случай чтобы каждая циферка уходила в массив (с рассчётом что файл не бинарный, а обычный txt):
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
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
    ifstream file("file.txt");
    char c;
    file.seekg(0,ios::end);
    const int size=file.tellg();
    int array[size];
    int i=0;
    file.seekg(0);
 
    while(!(file.eof()))
    {
        file>>c;
        array[i]=c-48;
        i++;
 
    }
 
    for (int i=0;i<size;i++)
     cout<<array[i]<<' ';
    return 0;
 
}
Yandex
Объявления
24.07.2011, 14:41     enum: цифры
Ответ Создать тему
Опции темы

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