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

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

Войти
Регистрация
Восстановить пароль
 
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 822
Записей в блоге: 1
#1

Перечислимый тип enum ,что это? - C++

22.09.2013, 13:15. Просмотров 487. Ответов 3
Метки нет (Все метки)

Не пойму зачем он нужен,если все равно он возвращает целые числа?
Как обращаться именно к имени(string) элемента типа enum?К примеру вывести имя из enum.Не помогает даже cast ...
В моем понимании,будто бы это просто воображение,и я представляю,что 1-это первый элемент(имя у меня в голове),2-это второй элемент (имя у меня в голове)...ит.д.
Кто нибудь объясните на примере моей задачи,вывод пришлось делать,хотя думал проще можно вывести....:

Единицы длины пронумерованы следующим образом: 1 — дециметр, 2 — километр, 3 — метр, 4 — миллиметр, 5 — сантиметр. Дан номер единицы длины (целое число в диапазоне 1–5) и длина отрезка в этих единицах (вещественное число). Найти длину отрезка в метрах.
Указание: используйте в решении перечисление для единиц длины.

part4.h:
C++
1
2
3
4
5
6
#ifndef PART4_H
#define PART4_H
enum  dlina{dc=1,km,m,mm,sm};
void printdlina(int i);
double find(int i,double v);
#endif /*PART4_H*/
Task6.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
/
#include <iostream>
#include <locale>
#include "part4.h"
 
using namespace std;
void printdlina(int i) {
     switch(i) {
     case 1: {
         cout<<"Дециметр"<<endl;
         break;
     }
     case 2: {
         cout<<"Километр"<<endl;
         break;
     }
     case 3: {
         cout<<"Метр"<<endl;
         break;
     }
      case 4: {
         cout<<"Миллиметр"<<endl;
         break;
    }
    
     }
}
 
 
double find(int i,double v) {
    if ( (i<1)||(i>5) ) {
        throw std::range_error("number of day should be in a range [1, 5]");
    }
     dlina a=static_cast<dlina>(i); 
 
     switch(a) {
     case 1: 
         return v/10;
     case 2: 
         return v*1000;
     case 3: 
         return v;
     case 4: 
         return v/1000;
     case 5:
         return v/100;
     }
}
main4.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <locale>
#include "part4.h"
 
using namespace std;
 
int main() {
    std::locale::global(std::locale(""));
    int i;
    double v;
    cout<<"Введите номер единицы длины (1-5) и значение этой длины "<<endl;
    cin>>i>>v;
    cout<<"Исходная длина ";
    printdlina(i);
    cout<<" Значение = "<<v;
    cout<<" После перевода в метры значение  = "<<find(i,v)<<endl;
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2013, 13:15     Перечислимый тип enum ,что это?
Посмотрите здесь:

перечислимый тип - C++
помогите пожалуйста написать конструктор, у которого в качестве параметра передается нужное поле из перечислимого типа!!!! на C++

Культура оформления кода: что такое enum? Где, когда и для чего уместно применять этот тип? - C++
не понял за что отвечают эти две строчки: enum ChosenOperation { ADD = 1, SHOW, SEARCH, EXIT }; enum SearchingCriteria { NAME =...

Что это за тип? Шаблон класса - C++
Example2&lt;Array&lt;int&gt;*&gt; ex1; Работаю с шаблонами классов. ex1 это экземпляр класс Example2, но я не понял, что это за тип такой в...

Скажите пожалуйста, что это за тип данных?! - C++
int **allocate2D(int rows, int cols) { int **arr2D; int i, j; arr2D = (int**)malloc(rows*sizeof(int*)); for(i=0;...

std::vector<int> Что это за тип данных? - C++
std::vector&lt;int&gt; indexes_1, indexes_2; // Used for homography Что это за тип данных?

Тип enum и нумерация - C++
Всем здрасьте ! У меня есть тип enum, который описывает что-то: enum NUM { X1, X2, X3, ...} Каждый Х, имеет свой смысл и число,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
22.09.2013, 14:07     Перечислимый тип enum ,что это? #2
Цитата Сообщение от DmitryM5 Посмотреть сообщение
Не пойму зачем он нужен,если все равно он возвращает целые числа?
Чтобы давать целым числам имена.

Цитата Сообщение от DmitryM5 Посмотреть сообщение
Как обращаться именно к имени(string) элемента типа enum?
Именно так, как вы сделали: руками. Есть варианты с массивами и std::map.

enum сделан таким костылём ради (очередной) совместимости с Си.
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 822
Записей в блоге: 1
22.09.2013, 14:18  [ТС]     Перечислимый тип enum ,что это? #3
Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
Чтобы давать целым числам имена.

Именно так, как вы сделали: руками. Есть варианты с массивами и std::map.

enum сделан таким костылём ради (очередной) совместимости с Си.
Ну я фактически не обращался к именам dc,km,mm,m,sm.?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2013, 15:52     Перечислимый тип enum ,что это?
Еще ссылки по теме:

Заголовочный файл и тип enum - C++
Задание состоит в том, что надо программу разбить на три части: заголовочный файл Factor.h, у меня он такой получился: #include...

Как сделать тип enum в структуре беззнаковым - C++
Почему элемент Type структуры BracketBlock signed и как его сделать unsigned, не увеличивая количество бит Type? enum BracketType { ...

Как результат функции конвертировать в тип Enum? - C++
Кто может подсказать как мне результат функции конвертировать в тип Enum, тоесть чтобы результат функции сравнивало со значениями в этом...

Что такое enum и как им пользоваться - C++
Доброе утро. Сижу изучаю С++ . Попался пример и Тема наследственные объекты. А как то так написанно что и не понятн что и за чем. Большая...

Известны углы α и β у основания. Выяснить, если это возможно, тип трапеции - C++
Известны углы α и β у основания трапеции. Выяснить, если это возможно,тип трапеции (прямоугольная, равнобедренная, прямоугольник).

что за тип unsigned? - C++
srand((unsigned)time(NULL)); приведенеие типов. а что за тип такой? целый?:scratch:


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

Или воспользуйтесь поиском по форуму:
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
22.09.2013, 15:52     Перечислимый тип enum ,что это? #4
Это имена констант для компилятора. Вы точно так же не можете взять и получить имя переменной в виде строки.
Yandex
Объявления
22.09.2013, 15:52     Перечислимый тип enum ,что это?
Ответ Создать тему
Опции темы

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