Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.59/34: Рейтинг темы: голосов - 34, средняя оценка - 4.59
Рожденная для битвы
293 / 71 / 14
Регистрация: 08.11.2009
Сообщений: 1,260
1

enum: цифры

24.07.2011, 14:01. Показов 6733. Ответов 25
Метки нет (Все метки)

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

Просто есть файл, там записано длинное число, и каждую циферку нужно записать в ячейку массива...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.07.2011, 14:01
Ответы с готовыми решениями:

Enum == int !=enum?
enum Flags{ Flag1 = 1, Flag2 = 2}; int main() { Flags a = Flag1, b = Flag2; a = a | b; } ...

Замена последней цифры на значение наименьшей цифры в записи числа N
Ошибка в задании Условие:Дано натуральное число N. Получить новое число М, которое образуется из...

Даны цифры двух двузначных чисел. Получить цифры суммы
Даны цифры двух двузначных чисел, записываемых в виде а2а1 и b2 b1, где а1 и b1— число единиц, а2 и...

Определить позицию первой цифры числа, которая меньше цифры заданной пользователем
Добрый вечер! Прошу помощи. Есть задача - Дано пятизначное число, введенное пользователем и...

25
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
24.07.2011, 14:05 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;
}
1
Рожденная для битвы
293 / 71 / 14
Регистрация: 08.11.2009
Сообщений: 1,260
24.07.2011, 14:07  [ТС] 3
Цитата Сообщение от Mиxaил Посмотреть сообщение
marina2, чем строка не угодила?
Да угодила

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

Я просто спросила: это один из вариантов решения задачи
0
Эксперт С++
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
24.07.2011, 14:08 4
marina2, перечисления позволяют задавать цифрам строковые идентификаторы, вопрос: как оносятся перечисления к Вашей задаче?
0
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
24.07.2011, 14:11 5
вашим вариантом enum нельзя.
C++
1
enum тип_перечисления { список_констант } список_переменных
0
Рожденная для битвы
293 / 71 / 14
Регистрация: 08.11.2009
Сообщений: 1,260
24.07.2011, 14:13  [ТС] 6
Mиxaил, поясните, пожалуйста про 48
Цитата Сообщение от Mиxaил Посмотреть сообщение
Line [ index ] - 48
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
24.07.2011, 14:17 7
48 это ASCII код символа '0'
У символа '1' код 49
и т. д.
То есть
'0' - 48 == 0
'1' - 48 == 1
...
'9' - 48 == 9

Добавлено через 31 секунду
Но я бы вычитал не 48, а именно '0'
1
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
24.07.2011, 14:19 8
вот еще один аналог
C++
1
ArrayNumbers [ index ] = static_cast < int > ( Line [ index ] ) - static_cast < int > ( '0' ); // или ( int ) ( от char )
дело в том, что переменные типа char имеют порядковый номер ( естественно целого типа ). Чтобы перевести символьное представление числа в "нормальный" вид целого типа, то нужно от значения в таблице отнять порядковый номер "0" - это 48... Отсюда имеем.
1
Рожденная для битвы
293 / 71 / 14
Регистрация: 08.11.2009
Сообщений: 1,260
24.07.2011, 14:20  [ТС] 9
grizlik78, спасибо, вот это мне и нужно было
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
24.07.2011, 14:21 10
Цитата Сообщение от Mиxaил Посмотреть сообщение
вот еще один аналог
А мне не очень понятно, зачем здесь явное преобразование к int. Всё-таки char это целочисленный тип.
0
Рожденная для битвы
293 / 71 / 14
Регистрация: 08.11.2009
Сообщений: 1,260
24.07.2011, 14:23  [ТС] 11
Цитата Сообщение от grizlik78 Посмотреть сообщение
Всё-таки char это целочисленный тип.
Можете подробней, не очень догоняю(
0
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
24.07.2011, 14:24 12
grizlik78, да просто, чтобы показать, что преобразовываем тип, для наглядности... Сам, конечно, такое не использую и не пропагандирую...
0
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
24.07.2011, 14:24 13
Вообще то enum созданный ваш перечисленный тип и так воспринимает как числа
C++
1
2
    enum numbers {one=1,two,three,four,five=5};
    cout<<four; //будет выведено 4, а не "four".
0
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
24.07.2011, 14:26 14
marina2, используем его порядковый номер в таблице ASCII с небольшим изменением ( - 48 )

Добавлено через 56 секунд
Gepar, речь не об этом шла...
1
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
24.07.2011, 14:27 15
Цитата Сообщение от marina2 Посмотреть сообщение
Можете подробней, не очень догоняю(
В char идёт хранение в виде кода символа по таблице символов вашего ПК, потому то Вы и можете присвоить значение переменной char переменой типа int. Пример:
C++
1
2
3
    char symbol='x';
    int a=symbol;
    cout<<a; //будет выведено 120 потому что по таблице ASCII символов код у символа x =120
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
24.07.2011, 14:27 16
Цитата Сообщение от marina2 Посмотреть сообщение
Всё-таки char это целочисленный тип.
Можете подробней, не очень догоняю(
Что именно? Что char это такой же тип, как и int, только с минимально возможным размером, неопределённой "знаковостью" и особой интерпретацией при вводе/выводе?
0
Рожденная для битвы
293 / 71 / 14
Регистрация: 08.11.2009
Сообщений: 1,260
24.07.2011, 14:27  [ТС] 17
Цитата Сообщение от Mиxaил Посмотреть сообщение
marina2, используем его порядковый номер в таблице ASCII с небольшим изменением ( - 48 )
Только это имелось в виду? А то я удивилась
0
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
24.07.2011, 14:29 18
marina2, ну да, тут все просто =)
1
Заблокирован
24.07.2011, 14:37 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
0
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
24.07.2011, 14:41 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;
 
}
0
24.07.2011, 14:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.07.2011, 14:41
Помогаю со студенческими работами здесь

Сложить цифры числа (до тех пор, пока не получится сумма из одной цифры)
Всем Доброго времени суток. Первая программа заключается в том что с клавиатуры вводится число...

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

enum
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&gt;=0;i--) { ...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru