С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

22.09.2013, 13:15. Просмотров 516. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2013, 13:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перечислимый тип enum ,что это? (C++):

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

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

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

Что это за тип? Шаблон класса - 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 Что это за тип данных?

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

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

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

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

enum сделан таким костылём ради (очередной) совместимости с Си.
Ну я фактически не обращался к именам dc,km,mm,m,sm.?
0
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
22.09.2013, 15:52 #4
Это имена констант для компилятора. Вы точно так же не можете взять и получить имя переменной в виде строки.
0
22.09.2013, 15:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2013, 15:52
Привет! Вот еще темы с ответами:

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

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

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

Что это за знак >> прочитал что это сдвиг вправо? что он делает - C++
int d=6, c=5,f; f = d &gt;&gt; c; cout&lt;&lt; f; вывод 0


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

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

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