Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2016, 10:52   #1
ilyakonst
Пользователь
 
Регистрация: 27.03.2016
Сообщений: 20
По умолчанию С, ввод Enum

Код:
enum tipdvig { B, D, P, C }; //бензиновый, дизельный, парусный, комбинированный
struct ship
{
	char name[20];
	int year;
	tipdvig dvig; // тип двигателя
	int info[2];  //кол-во экипажа, кол-во кают
	bool sport;
	ship2 uni;
	ship *next;

};
Есть перечисление tipdvig, в структуре переменная dvig типа tipdvig. Как сделать так, чтобы при заполнении структуры, пользователь сам выбирал тип двигателя? Ну и в вывести на экран потом именно не номера, которые присвоены элементам, а сами элементы перечисления(B,D....)
Код:
int buf =0;
scanf("%с", &buf);
	((*newship)->dvig) = (tipdvig)((int)buf);
вот таким образом не работает
ilyakonst вне форума Ответить с цитированием
Старый 08.04.2016, 10:54   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

например, заведите константный массив символов с соответствующей нумерацией и конвертируйте налету.
p51x вне форума Ответить с цитированием
Старый 08.04.2016, 11:01   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Зачем вы %c вводите, а не %d?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 08.04.2016, 11:04   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Он хочет вводить A. B. C. D (буквы), а не цифры
p51x вне форума Ответить с цитированием
Старый 08.04.2016, 11:10   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Тогда непонятно зачем int.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 08.04.2016, 11:10   #6
ilyakonst
Пользователь
 
Регистрация: 27.03.2016
Сообщений: 20
По умолчанию

в смысле откинуть напрочь перечисление и просто реализовать через массив?
ilyakonst вне форума Ответить с цитированием
Старый 08.04.2016, 11:54   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Примерно так:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <cstring>
#include <cctype>

void strToUpper(char *str);


enum Color
{
    UNKNOWN = 0,

    RED = 1,
    GREEN = 2,
    BLUE = 3,
    ORANGE = 4,
    BLACK = 5,
    WHITE = 6,
    YELLOW = 7
};

const int COLOR_COUNT = 8;

const char* COLORS[COLOR_COUNT] = { "UNKNOWN", "Red", "Green", "Blue", "Orange", "Black", "White", "Yellow" };

const char* colorString(Color color)
{
    return COLORS[(int) color];
}

Color stringToColor(char* str)
{
    strToUpper(str);

    for (int i = 0; i < COLOR_COUNT; i++)
    {
        char* colorStr = strdup(COLORS[i]);
        strToUpper(colorStr);

        if (strcmp(str, colorStr) == 0)
            return (Color) i;

        free(colorStr);
    }

    return Color::UNKNOWN;
}

int main()
{
    char input[20];
    scanf("%s", input);

    Color color = stringToColor(input);

    printf("%s", colorString(color));

    return 0;
}


void strToUpper(char *str)
{
    for (int i = strlen(str) - 1; i >= 0 ; i--)
    {
        str[i] = toupper(str[i]);
    }
}

Если только 1 символ вместо строки, то немного проще.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ перечисление,enum marina12 Помощь студентам 0 03.06.2013 22:05
c++ enum tanek Помощь студентам 1 06.12.2011 04:43
Enum в обьект. vjmap C# (си шарп) 2 08.10.2011 11:16
enum Syltan Общие вопросы C/C++ 6 26.11.2009 19:24
Работа с enum istoe Microsoft Office Excel 2 28.08.2009 12:53