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

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

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

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

04.02.2010, 19:45. Просмотров 1634. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2010, 19:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Упражнение из Лафоре. Тема Перечисления. Как правильно сделать вывод? (C++):

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

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

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

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

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

Упражнение по программированию (Стивен Прата, глава 2, упражнение 3) - C++
2 Глава, вопрос 3. Напишите программу на С++, которая использует три определяемых пользователем функции (включая main()) и генерирует...

9
Sekt
156 / 155 / 10
Регистрация: 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
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 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
AK_U
0 / 0 / 0
Регистрация: 03.02.2010
Сообщений: 22
05.02.2010, 18:44  [ТС] #5
kazak, я тоже склоняюсь к такому решению, но опять же не вижу смысла в использованиии двух ветвлений switch.
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 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 / 1
Регистрация: 14.02.2012
Сообщений: 46
22.02.2012, 20:36 #8
там написано же выводить по значениям полей (0 1 2 3...)
а вообще да,странная задача
0
yrceus
82 / 82 / 54
Регистрация: 25.08.2013
Сообщений: 326
25.08.2013, 16:44 #9
Лафоре Р. ооп в С++, это же упражнение, тоже не понял и я наверняка не последний. Так же решил через строковый литерал cout<<"laborer";
Но показалось идея упражнения другая, цитирую:
" Как мы говорили, стандартные средства ввода/вывода C++ вместо значений перечисляемых типов данных выводят их внутреннее представление в виде целых чисел. Для того чтобы преодолеть это ограничение, вы можете использовать конструкцию switch, с помощью которой устанавливается соответствие между значением переменной перечисляемого типа и ее внутренним представлением.
Напишите программу, которая сначала по первой букве должности, введенной пользователем, определяет соответствующее значение переменной, помещает это значение в переменную типа etype, а затем выводит полностью название должности, первую букву которой ввел пользователь.
Возможно, вам понадобится два ветвления switch: одно — для ввода значения, другое — для вывода. "
Мол каким - то образом переменную перечисления через ветвление switch можно вывести на экран не как внутреннее представление (число), а как значение (название).
Поправьте если что)))
0
yrceus
82 / 82 / 54
Регистрация: 25.08.2013
Сообщений: 326
26.08.2013, 20:56 #10
Нее, следующее упражнение поставило точку. То и имеется ввиду, что первым ветвлением присваиваете значение переменной, а вторым через cout << "... печатаете литерал подходящий под эту переменную. Запарил.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.08.2013, 20:56
Привет! Вот еще темы с ответами:

Страуструп. Упражнение. Ввод 3 чисел и последующий их вывод в порядке возрастания. - C++
Добрый вечер. Я только-только начал изучать программирование и начал с книги Страуструпа - Принципы и практика использования С++. Решил...

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

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

Как правильно сделать вывод матрицы и посчитанных элементов - Matlab
Среди элементов матрицы, расположенных ниже побочной диагонали, определить количество положительных элементов, а среди элементов выше...


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

Или воспользуйтесь поиском по форуму:
10
Yandex
Объявления
26.08.2013, 20:56
Ответ Создать тему
Опции темы

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