Maria ->∞
106 / 86 / 45
Регистрация: 27.08.2013
Сообщений: 1,335
Записей в блоге: 1
1

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

22.09.2013, 13:15. Показов 1239. Ответов 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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2013, 13:15
Ответы с готовыми решениями:

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

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

Enum и типы данных. Как задать тип значений явно, и какой тип будет при переполнении?
Пытаюсь сделать функцию с передачей нескольких параметров,используя битовые операции. В качестве...

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

3
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
22.09.2013, 14:07 2
Цитата Сообщение от DmitryM5 Посмотреть сообщение
Не пойму зачем он нужен,если все равно он возвращает целые числа?
Чтобы давать целым числам имена.

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

enum сделан таким костылём ради (очередной) совместимости с Си.
1
Maria ->∞
106 / 86 / 45
Регистрация: 27.08.2013
Сообщений: 1,335
Записей в блоге: 1
22.09.2013, 14:18  [ТС] 3
Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
Чтобы давать целым числам имена.

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

enum сделан таким костылём ради (очередной) совместимости с Си.
Ну я фактически не обращался к именам dc,km,mm,m,sm.?
0
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
22.09.2013, 15:52 4
Это имена констант для компилятора. Вы точно так же не можете взять и получить имя переменной в виде строки.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.09.2013, 15:52
Помогаю со студенческими работами здесь

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

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

UINT - что это за тип? И как его из библиотеки в C# перевести?
Здравия всем! В общем, есть функция такая: Q1: Что это за UINT такой? Я интернетах пишут,...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru