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

Перечисляемый тип в переменную - C++

Восстановить пароль Регистрация
 
TKZoo
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 3
30.09.2012, 18:25     Перечисляемый тип в переменную #1
Доброго времени суток. Грызу гранит c++. Набираюсь ума по замечательной книге Р.ЛАФОРЕ
Не могу понять одно задание. Необходимо передать etype prof в w1.pr
Извините за откровенный бред. Спасибо.

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
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
#include <conio.h>
using namespace std; 
enum etype { laborer, secretary, manager, accountant, executive, researcher };
struct employee
{
int wn;
float wsalary;
int day;
int month;
int year;
char pr;
};
 
int main()
{
setlocale(0,"Rus");
 
employee w1;
employee w2;
employee w3;
etype prof;
char dummchar;
char ch;
 
cout << "Данные 1го рабочего:" << endl;
cout << "Введите номер рабочего: "; cin >> w1.wn; cout << endl;
cout << "Введите зарплату рабочего: "; cin >> w1.wsalary; cout << endl;
cout << "Введите дату приема рабочего: день/месяц/год "; cin >> w1.day >> dummchar >> w1.month >> dummchar >> w1.year; cout << endl;
cout << "Введите первую букву должности рабочего : laborer, secretary, manager, accountant, executive, researcher"; cin >> ch; cout << endl;
 
switch (ch)
{
case 'l': prof = laborer; break;
case 's': prof = secretary; break;
case 'm': prof = manager; break;
case 'a': prof = accountant; break;
case 'e': prof = executive; break;
case 'r': prof = researcher; break;
}
 
switch (prof)
{
case laborer: cout << "laborer" << endl; break;
case secretary: cout << "secretary" << endl; break;
case manager: cout << "manager" << endl; break;
case accountant: cout << "accountant" << endl; break;
case executive: cout << "executive" << endl; break;
case researcher: cout << "researcher" << endl; break;
}
 
cout << "Рабочий #1 :" << endl;
cout << "Номер рабочего: " << w1.wn << endl;
cout << "Зарплата рабочего: " << w1.wsalary << endl;
cout << "Дата принятия: " << w1.day << '/' << w1.month << '/' << w1.year << endl;
cout << "Должность: " << w1.pr << endl;
 
system ("pause");
 
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DPS
 Аватар для DPS
32 / 32 / 3
Регистрация: 12.11.2011
Сообщений: 107
Завершенные тесты: 1
30.09.2012, 20:19     Перечисляемый тип в переменную #2
В смысле?
Цитата Сообщение от TKZoo Посмотреть сообщение
Необходимо передать etype prof в w1.pr
Вот так что ли?

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
switch (prof)
{
    case laborer: cout << "laborer" << endl;
        w1.pr='l';break;
    case secretary: cout << "secretary" << endl;
        w1.pr='s'; break;
    case manager: cout << "manager" << endl;
        w1.pr='m'; break;
    case accountant: cout << "accountant" << endl;
        w1.pr='a'; break;
    case executive: cout << "executive" << endl;
        w1.pr='e'; break;
    case researcher: cout << "researcher" << endl;
        w1.pr='r'; break;
}
 
 
cout << "Рабочий #1 :" << endl;
cout << "Номер рабочего: " << w1.wn << endl;
cout << "Зарплата рабочего: " << w1.wsalary << endl;
cout << "Дата принятия: " << w1.day << '/' << w1.month << '/' << w1.year << endl;
cout << "Должность: ";
 
switch (w1.pr)
{
    case 'l': cout << "laborer" << endl;break;
    case 's': cout << "secretary" << endl;break;
    case 'm': cout << "manager" << endl;break;
    case 'a': cout << "accountant" << endl;break;
    case 'e': cout << "executive" << endl;break;
    case 'r': cout << "researcher" << endl;break;
}
TKZoo
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 3
30.09.2012, 21:13  [ТС]     Перечисляемый тип в переменную #3
Возникает ошибка uninitialized local variable 'prof' used.
В целом вопрос заключается в том, зачем использовать enum,
если в switch по case пишем то что нам надо.

Я предполагал это должно как то уменьшить писанины, если вводить данные больше чем для одного рабочего. А так получается что все равно пишем в case то что надо и все.
Объясните для чего нужен в данном случае перечисление enum?
На всякий случай приведу текст самого задания:

Организуйте программу таким образом, чтобы пользователь вводил 4 пункта данных о каждом из трех сотрудников: его номер, величину зарплаты, его должность и дату принятия на работу. Программа должна хранить введенные значения в трех переменных типа employee и выводить их содержимое на экран. Пусть, например, в программе определен перечисляемый тип данных etype, отражающий должность сотрудника:
enum etype { laborer, secretary, manager, accountant, executive, researcher };
Напишите программу, которая сначала по первой букве должности, введен- ной пользователем, определяет соответствующее значение переменной, помещает это значение в переменную типа etype, а затем выводит полностью название должности.

Хочется разобраться и понять. Спасибо.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
30.09.2012, 21:38     Перечисляемый тип в переменную #4
TKZoo, ну вы задание не до конца поняли. От вас хотели такой класс:
C++
1
2
3
4
5
6
7
8
9
struct employee
{
int wn;
float wsalary;
int day;
int month;
int year;
etype pr;
};
Вывод, кстати, можно сделать так:
C++
1
2
std::array<std::string, 6> full_name_prof = {"laborer", "secretary", "manager", "accountant", "executive", "researcher"};
std::cout << "Должность: " <<  full_name_prof[(int)w1.pr];
А как вы сами считаете, зачем нужен enum?
TKZoo
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 3
30.09.2012, 22:04  [ТС]     Перечисляемый тип в переменную #5
На сколько позволяют мои знания, enum хорошо использовать для присвоения им каких то значений которые не будут меняться в дальнейшем. Или наоборот каким то цифирным значениям понятные наименования.
К сожалению по книге я еще не добрался до изучения array.
А вот про задание да, видимо не понял что перечисление надо включить в саму структуру. Буду пробовать. Спасибо.
Yandex
Объявления
30.09.2012, 22:04     Перечисляемый тип в переменную
Ответ Создать тему
Опции темы

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