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

Упражнение из Лафоре. Тема Перечисления. Как правильно сделать вывод? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
AK_U
 Аватар для AK_U
0 / 0 / 0
Регистрация: 03.02.2010
Сообщений: 22
04.02.2010, 19:45     Упражнение из Лафоре. Тема Перечисления. Как правильно сделать вывод? #1
Условие: в программе определен печесляемый тип данных etype, отражающий должность сотрудника
enum etype { laborer, secretary, manager, accountant, executive, researcher}. Надо по первой букве должности, введенной пользователем, определить соответствующее значение переменной, поместить это значение в переменную типа etype, а затем полностью вывести название должности. Это надо сделать с помощью 2 ветвлений switch. Вот, что получилось у меня:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
enum etype { laborer, secretary, manager, accountant, executive, researcher};
 
int main()
{
    etype temp;
    char letter;
    cout <<"Input first letter of position\n";
    cout << "(laborer, secretary, manager, accontant, executive, reseacher): ";
    cin >> letter;
    switch(letter)
    {   
        case 'l': temp = laborer; break;
        case 's': temp = secretary; break;
        case 'm': temp = manager; break;
        case 'a': temp = accountant; break;
        case 'e': temp = executive; break;
        case 'r': temp = researcher;
    }
    return 0;
}
Как сделать вывод?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
05.02.2010, 11:26     Упражнение из Лафоре. Тема Перечисления. Как правильно сделать вывод? #2
вывод на екран?
C++
1
if(temp==laborer)cout<<"laborer";
AK_U
 Аватар для AK_U
0 / 0 / 0
Регистрация: 03.02.2010
Сообщений: 22
05.02.2010, 13:12  [ТС]     Упражнение из Лафоре. Тема Перечисления. Как правильно сделать вывод? #3
Да, так можно( можно и так case 'l': temp = laborer, cout << "laborer"),но это, как я понимаю из условия, не то что требуется. В таком варианте не используется два ветвления switch, и смысл temp = laborer пропадает. Тут проблема в том, что перечисления выводятся не как слова, а как числа( 0, 1, 2, 3 и т.д.), для этого и предлагается использовать второй switch( один для ввода, другой для вывода).
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
05.02.2010, 15:39     Упражнение из Лафоре. Тема Перечисления. Как правильно сделать вывод? #4
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
#include <iostream>
using namespace std;
enum etype { laborer, secretary, manager, accountant, executive, researcher};
 
int main()
{
        etype temp;
        char letter;
        cout <<"Input first letter of position\n";
        cout << "(laborer, secretary, manager, accontant, executive, reseacher): ";
        cin >> letter;
        switch(letter)
        {       
                case 'l': temp = laborer; break;
                case 's': temp = secretary; break;
                case 'm': temp = manager; break;
                case 'a': temp = accountant; break;
                case 'e': temp = executive; break;
                case 'r': temp = researcher;
        }
        switch(temp)
        {       
                case 0: cout << "laborer" << endl; break;
                case 1: cout <<  "secretary" << endl; break;
                case 2: cout << "manager" << endl; break;
                case 3: cout <<  "accountant" << endl; break;
                case 4: cout << "executive" << endl; break;
                case 5: cout <<  "researcher" << endl; break;
        }
        
        system("pause");
        return 0;
}
AK_U
 Аватар для AK_U
0 / 0 / 0
Регистрация: 03.02.2010
Сообщений: 22
05.02.2010, 18:44  [ТС]     Упражнение из Лафоре. Тема Перечисления. Как правильно сделать вывод? #5
kazak, я тоже склоняюсь к такому решению, но опять же не вижу смысла в использованиии двух ветвлений switch.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
08.02.2010, 12:07     Упражнение из Лафоре. Тема Перечисления. Как правильно сделать вывод? #6
Цитата Сообщение от AK_U Посмотреть сообщение
Надо по первой букве должности, введенной пользователем, определить соответствующее значение переменной, поместить это значение в переменную типа etype, а затем полностью вывести название должности. Это надо сделать с помощью 2 ветвлений switch.
Цитата Сообщение от AK_U Посмотреть сообщение
kazak, я тоже склоняюсь к такому решению, но опять же не вижу смысла в использованиии двух ветвлений switch.
Ну ты уж как-нибудь определись, что тебе нужно))
AK_U
 Аватар для AK_U
0 / 0 / 0
Регистрация: 03.02.2010
Сообщений: 22
08.02.2010, 15:21  [ТС]     Упражнение из Лафоре. Тема Перечисления. Как правильно сделать вывод? #7
=)))) Всмысле надо 2 ветвления, но как бы такое решение не рациональным получается. Я вот сейчас думаю, может это задача с таким дурным условием. Просто в этой книге во всех задачах есть какой смысл, а в этой получается,что нету.
AAA-
13 / 13 / 1
Регистрация: 14.02.2012
Сообщений: 46
22.02.2012, 20:36     Упражнение из Лафоре. Тема Перечисления. Как правильно сделать вывод? #8
там написано же выводить по значениям полей (0 1 2 3...)
а вообще да,странная задача
yrceus
 Аватар для yrceus
80 / 80 / 54
Регистрация: 25.08.2013
Сообщений: 321
25.08.2013, 16:44     Упражнение из Лафоре. Тема Перечисления. Как правильно сделать вывод? #9
Лафоре Р. ооп в С++, это же упражнение, тоже не понял и я наверняка не последний. Так же решил через строковый литерал cout<<"laborer";
Но показалось идея упражнения другая, цитирую:
" Как мы говорили, стандартные средства ввода/вывода C++ вместо значений перечисляемых типов данных выводят их внутреннее представление в виде целых чисел. Для того чтобы преодолеть это ограничение, вы можете использовать конструкцию switch, с помощью которой устанавливается соответствие между значением переменной перечисляемого типа и ее внутренним представлением.
Напишите программу, которая сначала по первой букве должности, введенной пользователем, определяет соответствующее значение переменной, помещает это значение в переменную типа etype, а затем выводит полностью название должности, первую букву которой ввел пользователь.
Возможно, вам понадобится два ветвления switch: одно — для ввода значения, другое — для вывода. "
Мол каким - то образом переменную перечисления через ветвление switch можно вывести на экран не как внутреннее представление (число), а как значение (название).
Поправьте если что)))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.08.2013, 20:56     Упражнение из Лафоре. Тема Перечисления. Как правильно сделать вывод?
Еще ссылки по теме:

C++ Подскажите как правильно сделать
C++ Подскажите как правильно сделать
C++ тема Наследование правильно ли я вызываю диструктор

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

Или воспользуйтесь поиском по форуму:
yrceus
 Аватар для yrceus
80 / 80 / 54
Регистрация: 25.08.2013
Сообщений: 321
26.08.2013, 20:56     Упражнение из Лафоре. Тема Перечисления. Как правильно сделать вывод? #10
Нее, следующее упражнение поставило точку. То и имеется ввиду, что первым ветвлением присваиваете значение переменной, а вторым через cout << "... печатаете литерал подходящий под эту переменную. Запарил.
Yandex
Объявления
26.08.2013, 20:56     Упражнение из Лафоре. Тема Перечисления. Как правильно сделать вывод?
Ответ Создать тему
Опции темы

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