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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
AK_U
0 / 0 / 0
Регистрация: 03.02.2010
Сообщений: 22
#1

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

04.02.2010, 19:45. Просмотров 1593. Ответов 9
Метки нет (Все метки)

Условие: в программе определен печесляемый тип данных 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;
}
Как сделать вывод?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2010, 19:45     Упражнение из Лафоре. Тема Перечисления. Как правильно сделать вывод?
Посмотрите здесь:
Решить упражнение на файловый ввод/вывод из книги Лафоре (12 глава) C++
Упражнение из книги Лафоре C++
Зацикливание программы. В чем же ошибка? ( Упражнение 5 Глава 7 Лафоре ООП C++) C++
C++ Работа с Классами или разбираем 10 Упражнение 6 главы книги ООП в С++ Р.Лафоре
Как правильно впихнуть и использовать перечисления в структуре? C++
Упражнение по программированию (Стивен Прата, глава 2, упражнение 3) C++
Страуструп. Упражнение. Ввод 3 чисел и последующий их вывод в порядке возрастания. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
05.02.2010, 11:26     Упражнение из Лафоре. Тема Перечисления. Как правильно сделать вывод? #2
вывод на екран?
C++
1
if(temp==laborer)cout<<"laborer";
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
3032 / 2353 / 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
0 / 0 / 0
Регистрация: 03.02.2010
Сообщений: 22
05.02.2010, 18:44  [ТС]     Упражнение из Лафоре. Тема Перечисления. Как правильно сделать вывод? #5
kazak, я тоже склоняюсь к такому решению, но опять же не вижу смысла в использованиии двух ветвлений switch.
kazak
3032 / 2353 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
08.02.2010, 12:07     Упражнение из Лафоре. Тема Перечисления. Как правильно сделать вывод? #6
Цитата Сообщение от AK_U Посмотреть сообщение
Надо по первой букве должности, введенной пользователем, определить соответствующее значение переменной, поместить это значение в переменную типа etype, а затем полностью вывести название должности. Это надо сделать с помощью 2 ветвлений switch.
Цитата Сообщение от AK_U Посмотреть сообщение
kazak, я тоже склоняюсь к такому решению, но опять же не вижу смысла в использованиии двух ветвлений switch.
Ну ты уж как-нибудь определись, что тебе нужно))
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
81 / 81 / 54
Регистрация: 25.08.2013
Сообщений: 326
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++ Подскажите как правильно сделать
Как правильно сделать сортировку? C++
C++ Подскажите как правильно сделать

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

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

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