Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перечисление 
V
    Опции темы
agentjamesbolt007
Дата 14.9.2012, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 5.9.2012

Репутация: нет
Всего: нет



Задача. Программа должна поп первой введенной букве должности определять соответствующее значение переменной , поместить это значение в переменную типа etype, а затем вывести полное название должности на экран.

Первую часть я сделал, но непойму как выводить на экран название должности из переменной , ведь у перечислений есть недостаток с стандартным вводом/выводом(выводятся целые значения переменной 0, 1,2 и т.д.)

Наверное для вывода нужно создать еще одно ветвление switch но не пойму
как на экране выводить название 

Код

#include <iostream>
using namespace std;
//объявление перечисляемого типа
enum etype {laborer, secretary, manager, accountant, executive, researcher};
int main()
{
  char letter;
  
  etype l, s, m, a, e, r; //определения переменных хранящих должности
  cout <<"Vvedite pervuyu bukvu dolgnosti (laborer, secretary, manager, accountant,"
  <<"executive, researcher)";
  cin >>letter;
  switch(letter)
  {
    case'l': l =laborer; break;     //инициализация переменных
    case's': s =secretary; break;
    case'm': m =manager; break;
    case'a': a =accountant; break;
    case'e': e =executive; break;
    case'r': r =researcher; break;
  }
  
  //cout <<"Polnoe nazvanie dolgnosti:" 

}


Это сообщение отредактировал(а) agentjamesbolt007 - 14.9.2012, 14:37
PM MAIL   Вверх
bsa
Дата 14.9.2012, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



agentjamesbolt007, шаблонами и переопределением функций пользоваться можно? Если нет, то тогда просто делай еще один свитч на вывод.
PM   Вверх
feodorv
Дата 14.9.2012, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(bsa @  14.9.2012,  16:13 Найти цитируемый пост)
делай еще один свитч 

А нельзя так:
Код

#include <iostream>
using namespace std;

//объявление перечисляемого типа
enum etype {laborer, secretary, manager, accountant, executive, researcher,typelast};
const char *names[typelast] = { "laborer", "secretary", "manager", "accountant", "executive", "researcher" };

int main()
{
  char letter;
  etype type = typelast; //определения переменных хранящих должности

  do
  {
    cout <<"Vvedite pervuyu bukvu dolgnosti (laborer, secretary, manager, accountant,"
    <<"executive, researcher)";
    cin >>letter;

    switch(letter)
    {
      case 'l': type = laborer; break;
      case 's': type =secretary; break;
      case 'm': type = manager; break;
      case 'a': type = accountant; break;
      case 'e': type = executive; break;
      case 'r': type =researcher; break;
    }
  } while( type == typelast );
  
  cout << "Polnoe nazvanie dolgnosti: " << names[type];
}



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
agentjamesbolt007
Дата 17.9.2012, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 5.9.2012

Репутация: нет
Всего: нет



feodorv так нельзя, т.к. указатели еще не проходил и пользоваться ими нельзя
Цитата(bsa @  14.9.2012,  15:13 Найти цитируемый пост)
шаблонами и переопределением функций пользоваться можно? Если нет, то тогда просто делай еще один свитч на вывод.

функциями тоже нельзя, а точто свитч на выход это я знаю(в начале писал), но как его запихать непойму.

PM MAIL   Вверх
Dem_max
Дата 17.9.2012, 08:52 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 4
Всего: 39



Сделай так  smile 
Код

    switch(letter)
    {
      case 'l': type = laborer; break;
      case 'a': type = accountant; break;
      case 'm': type = manager; break;
      case 'e': type = executive; break;
      case 'r': type =researcher; break;
      case 's': type =secretary; break;  
    }
    



--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
agentjamesbolt007
Дата 17.9.2012, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 5.9.2012

Репутация: нет
Всего: нет





Цитата(Dem_max @  17.9.2012,  08:52 Найти цитируемый пост)
Сделай так   
код C++
    switch(letter)
    {
      case 'l': type = laborer; break;
      case 'a': type = accountant; break;
      case 'm': type = manager; break;
      case 'e': type = executive; break;
      case 'r': type =researcher; break;
      case 's': type =secretary; break;  
    }


а в чем разница? попробовал я так, все равно результат показывает число 
PM MAIL   Вверх
agentjamesbolt007
Дата 17.9.2012, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 5.9.2012

Репутация: нет
Всего: нет



ни у кого мыслей по этому поводу нет? что неужели такая сложная задача?
PM MAIL   Вверх
math64
Дата 17.9.2012, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



Видел смайлик? А теперь прочитай только первые буквы вариантов.

Добавлено через 2 минуты и 59 секунд
А ответ собственно по теме - разворачивай case в обратном направлении, раз массивами пользоваться нельзя. Хотя строка - уже массив, а cout - целый класс.
Код

swicth(type) {
case laborer: cout << "laborer" << endl; break;
...
}

PM   Вверх
feodorv
Дата 17.9.2012, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(agentjamesbolt007 @  17.9.2012,  16:12 Найти цитируемый пост)
ни у кого мыслей по этому поводу нет? что неужели такая сложная задача? 

Ну, была надежда, что Вы сами что-нибудь придумаете, направление мысли Вам задали smile 


Цитата(bsa @  14.9.2012,  16:13 Найти цитируемый пост)
тогда просто делай еще один свитч на вывод. 

Код

switch( type )
{
  case laborer:
    cout << "laborer" << endl;
    break;
  ...
}



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
agentjamesbolt007
Дата 19.9.2012, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 5.9.2012

Репутация: нет
Всего: нет



Всем спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0527 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.