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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перечисление,enum 
:(
    Опции темы
marina12
Дата 3.6.2013, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте!
Пишу программу "картотека для работников", использую enum при выборе Отдела(программисты менеджеры, доставка) и при выборе Транспорта в отделе доставка(авто,поезд,самолет,корабль). При выборе отдела, программа должна просить пользователя ввести число, соотвественно от 0 до 2, затем сравнивать его с константами в enum и записывать в общую таблицу слово("programmers","managment","shipping"), которую потом можно вывести на экран. Проблема в том,что когда показываю таблицу на экран, все поля заполняются так как нужно,а в поле Department(Отдел) выводи горизонтальные полосы. Пожалуйста,подскажите в чем ошибка.
структуры и enum:
Код

struct PROG
{
    char name [255];
    char lastname [255];
    int age;
    enum Department;
    char Department [50];
    union
    {
        struct
        {
            char Project [255];
            char CPU [127];
            int Memory;
        }Programmers;
        struct
        {
            char Project [255];
            char Customer [255];
            int ProgrammersNum;
        }Management;
        struct
        {
            char Addres [255];
            char Customer [255];
            int Weight;
            char Transport [20];
            enum Transport;
        }Shipping;
    };
};
struct Value
{
    PROG prog;
    Value *next;
};
enum Department
{
    DEPT_PROGRAMMERS,
    DEPT_MANAGEMENT,
    DEPT_SHIPPING
};
enum Transport
{
    TRANSP_TRAIN,
    TRANSP_AUTO,
    TRANSP_AERO,
    TRANSP_SHIP
};
Value *first = NULL;

отрывок из функции добавления записи
Код

printf("Choose the department:\n '0'-programmers;\n '1'-managment;\n '2'-shipping\n");
        scanf("%d",&q);
        cin.ignore(20,'\n');
        if (q==DEPT_PROGRAMMERS)
        {
            printf("programmers",&v->prog.Department);
            printf("\nEnter the project: ");
            gets(v->prog.Programmers.Project);
            printf("Enter the CPU: ");
            gets(v->prog.Programmers.CPU);
            printf("Enter the memory: ");
            scanf("%d",&v->prog.Programmers.Memory);
            cin.ignore(20, '\n'); // Удаляем из буфера ввода все, что там могло остаться после ввода
        }
        if (q==DEPT_MANAGEMENT)
        {
            printf("management",&v->prog.Department);
            printf("\nEnter the project: ");
            gets(v->prog.Management.Project);
            printf("Enter the customers: ");
            gets(v->prog.Management.Customer);
            printf("Enter the numbers of programmers: ");
            scanf("%d",&v->prog.Management.ProgrammersNum);
            cin.ignore(20, '\n'); // Удаляем из буфера ввода все, что там могло остаться после ввода
        }
        if (q==DEPT_SHIPPING)
        {
            printf("shipping",&v->prog.Department);
            printf("\nEnter the address: ");
            gets(v->prog.Shipping.Addres);
            printf("Enter the customers: ");
            gets(v->prog.Shipping.Customer);
            printf("Enter the weight: ");
            scanf("%d",&v->prog.Shipping.Weight);
            printf("Enter the transport:\n '0' - train;\n '1' - auto;\n '2' - aero;\n '3' - ship\n");
            scanf("%d",&q2);
            if (q2==TRANSP_TRAIN)
            {
                printf("train",&v->prog.Shipping.Transport);
            }
            if (q2==TRANSP_AUTO)
            {
                printf("auto",&v->prog.Shipping.Transport);
            }
            if (q2==TRANSP_AERO)
            {
                printf("aero",&v->prog.Shipping.Transport);
            }
            if (q2==TRANSP_SHIP)
            {
                printf("ship",&v->prog.Shipping.Transport);
            }
            cin.ignore(20, '\n'); // Удаляем из буфера ввода все, что там могло остаться после ввода
        }

таблица
Код

printf("#  | Name     | Lastname | Age   |Departm  P|| Project  | CPU      | Memory     |         \n");
printf("   |          |          |       |         M|| Project  | Customers| Programmers|         \n");
printf("   |          |          |       |         S|| Address  | Customers| Weight     |Transport\n");
printf("---+----------+----------+-------+----------++----------+----------+------------+------------\n");

вот так вывожу в таблицу:
Код

printf("%3d|%10s|%10s|%7d|%10s||%10s|%10s|%10d|%10s| \n",K,
       v->prog.name,v->prog.lastname,v->prog.age,v->prog.Department,
       v->prog.Programmers.Project,v->prog.Programmers.CPU,v->prog.Programmers.Memory);

И еще вопрос,как написать условие для заполнения полей в таблице: если пользователь выбрал в Department "programmers", то заполнять в таблице поля:Project,CPU,Memory;если выбрал "mamgement, то заполнять другие поля и т.д.?

Модератор: длинные строки кода лучше разбивать на несколько.

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  Безымянный.png 47,13 Kb
PM MAIL   Вверх
feodorv
Дата 4.6.2013, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(marina12 @  3.6.2013,  22:08 Найти цитируемый пост)
 в поле Department(Отдел) выводи горизонтальные полосы

Не знаю, откуда там именно горизонтальные полосы, возможно, остались от чего-то другого. Но поле Department никак не инициализируется:
Цитата(marina12 @  3.6.2013,  22:08 Найти цитируемый пост)
            printf("programmers",&v->prog.Department);

Цитата(marina12 @  3.6.2013,  22:08 Найти цитируемый пост)
           printf("management",&v->prog.Department);

Цитата(marina12 @  3.6.2013,  22:08 Найти цитируемый пост)
            printf("shipping",&v->prog.Department);

Всё это не есть инициализация поля Department, в результате в нём - мусор (горизонтальные полосы).
Делайте 
Код

  strcpy( v->prog.Department, "programmers");

и т.д.


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


любитель
****


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

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



Цитата(marina12 @  3.6.2013,  20:08 Найти цитируемый пост)
 перечисление,enum

Цитата(marina12 @  3.6.2013,  20:08 Найти цитируемый пост)
а в поле Department(Отдел) выводи горизонтальные полосы

 smile где связь между темой вопросом... smile

Добавлено через 8 секунд
 smile 


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

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

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

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

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


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

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


 




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


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

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