Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/12: Рейтинг темы: голосов - 12, средняя оценка - 4.67
AK_U
0 / 0 / 0
Регистрация: 03.02.2010
Сообщений: 22
1

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

04.02.2010, 19:45. Просмотров 2175. Ответов 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;
}
Как сделать вывод?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2010, 19:45
Ответы с готовыми решениями:

Решить упражнение на файловый ввод/вывод из книги Лафоре (12 глава)
Доброго времени суток. В очередной раз обращаюсь за советом касательно разъяснения задачи ...

Упражнение из книги Лафоре
//11.cpp #include &lt;iostream&gt; using namespace std; class sterling { private: long pounds;...

Зацикливание программы. В чем же ошибка? ( Упражнение 5 Глава 7 Лафоре ООП C++)
Миллион раз пересмотрел, ну не вижу ошибку и все тут :(. Должна же остановка на вводе быть! Что...

Работа с Классами или разбираем 10 Упражнение 6 главы книги ООП в С++ Р.Лафоре
Доброго времени суток господа. Подскажите пожалуйста каким образом можно объединить классы? Почему...

Как правильно впихнуть и использовать перечисления в структуре?
// Test_Project.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot;...

9
Sekt
158 / 157 / 47
Регистрация: 29.04.2009
Сообщений: 637
05.02.2010, 11:26 2
вывод на екран?
C++
1
if(temp==laborer)cout<<"laborer";
0
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( один для ввода, другой для вывода).
0
kazak
3065 / 2386 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
Завершенные тесты: 1
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;
}
1
05.02.2010, 15:39
AK_U
0 / 0 / 0
Регистрация: 03.02.2010
Сообщений: 22
05.02.2010, 18:44  [ТС] 5
kazak, я тоже склоняюсь к такому решению, но опять же не вижу смысла в использованиии двух ветвлений switch.
0
kazak
3065 / 2386 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
Завершенные тесты: 1
08.02.2010, 12:07 6
Цитата Сообщение от AK_U Посмотреть сообщение
Надо по первой букве должности, введенной пользователем, определить соответствующее значение переменной, поместить это значение в переменную типа etype, а затем полностью вывести название должности. Это надо сделать с помощью 2 ветвлений switch.
Цитата Сообщение от AK_U Посмотреть сообщение
kazak, я тоже склоняюсь к такому решению, но опять же не вижу смысла в использованиии двух ветвлений switch.
Ну ты уж как-нибудь определись, что тебе нужно))
0
AK_U
0 / 0 / 0
Регистрация: 03.02.2010
Сообщений: 22
08.02.2010, 15:21  [ТС] 7
=)))) Всмысле надо 2 ветвления, но как бы такое решение не рациональным получается. Я вот сейчас думаю, может это задача с таким дурным условием. Просто в этой книге во всех задачах есть какой смысл, а в этой получается,что нету.
0
AAA-
13 / 13 / 5
Регистрация: 14.02.2012
Сообщений: 46
22.02.2012, 20:36 8
там написано же выводить по значениям полей (0 1 2 3...)
а вообще да,странная задача
0
yrceus
85 / 85 / 80
Регистрация: 25.08.2013
Сообщений: 338
25.08.2013, 16:44 9
Лафоре Р. ооп в С++, это же упражнение, тоже не понял и я наверняка не последний. Так же решил через строковый литерал cout<<"laborer";
Но показалось идея упражнения другая, цитирую:
" Как мы говорили, стандартные средства ввода/вывода C++ вместо значений перечисляемых типов данных выводят их внутреннее представление в виде целых чисел. Для того чтобы преодолеть это ограничение, вы можете использовать конструкцию switch, с помощью которой устанавливается соответствие между значением переменной перечисляемого типа и ее внутренним представлением.
Напишите программу, которая сначала по первой букве должности, введенной пользователем, определяет соответствующее значение переменной, помещает это значение в переменную типа etype, а затем выводит полностью название должности, первую букву которой ввел пользователь.
Возможно, вам понадобится два ветвления switch: одно — для ввода значения, другое — для вывода. "
Мол каким - то образом переменную перечисления через ветвление switch можно вывести на экран не как внутреннее представление (число), а как значение (название).
Поправьте если что)))
0
yrceus
85 / 85 / 80
Регистрация: 25.08.2013
Сообщений: 338
26.08.2013, 20:56 10
Нее, следующее упражнение поставило точку. То и имеется ввиду, что первым ветвлением присваиваете значение переменной, а вторым через cout << "... печатаете литерал подходящий под эту переменную. Запарил.
0
26.08.2013, 20:56
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.08.2013, 20:56

Вывод цикла, как сделать правильно
Хотелось бы узнать, как нужно правильно выводить данные из таблицы. Например, есть 5 ячеек &lt;td&gt;, я...

как правильно сделать вывод из бд с двух таблиц)
есть таблицы orders id | name | email и тд. 1 | петя | email@jhh.jj и ...

Подскажите как правильно сделать вывод list<> в ListVew
Здравствуйте,есть приложение в винформ, теперь вот осваиваю WPF и смотрю паттерн MVVM. Если на...


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

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

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