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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2015, 01:30   #1
vitalezzz
Новичок
Джуниор
 
Регистрация: 14.11.2015
Сообщений: 2
По умолчанию Задача С++

Всем привет. Есть задача: Добавьте поля типа enum etype и struct date в структуру employee . Организуйте программу таким образом, чтобы пользователь вводил 4 пункта данных о каждом из трех сотрудников: его номер, величину зарплаты, его должность и дату принятия на работу. Программа должна хранить введенные значения в трех переменных типа employee и выводить их содержимое на экран.

Подскажите, как можно сократить код (если можно), + как выполнить условие задачи с использованием enum, пожалуйста

Код:
#include <iostream>
#include <iomanip>

using namespace std;
///////////////////////////////////////////

struct employee
{
    int num;
    float pay;
};

///////////////////////////////////////////

    struct date
{
    int day;
    int month;
    int year;
};

///////////////////////////////////////////

int main()
{
    setlocale(LC_ALL, "RUS");

    char chETYPE1;                                             // Определение символов
    char chETYPE2;                                             // для switch и прочее
    char chETYPE3;                                             //
    char sCh1;                                                 //
    char sCh2 = '/';                                           //
    int w11, w12, w13, w21, w22, w23, w31, w32, w33;           // Определение переменных
    w11 = w12 = w13 = w21 = w22 = w23 = w31 = w32 = w33 = 0;   // для switch
    employee emp1, emp2, emp3;                                 // Определение структурных переменных
    date date1, date2, date3;                                  //

    cout << "Введите номер, зарплату, должность (1 - Секретарь, 2 - Исследователь," // Ввод информации сотрудника 1
    << "\n3 - Начальник склада) и дату принятия сотрудника 1 (DD/MM/YY): \n";
    cin >> emp1.num; cout << " ";
    cin >> emp1.pay; cout << " ";
    cin >> chETYPE1; cout << " ";
       switch(chETYPE1)
       {
        case '1':     w11++; break;
        case '2':     w12++; break;
        case '3':     w13++; break;
       }
    cin >> date1.day >> sCh1 >> date1.month >> sCh2 >> date1.year; cout << endl;

    cout << "Введите номер, зарплату, должность (1 - Секретарь, 2 - Исследователь," // Ввод информации сотрудника 2
    << "\n3 - Начальник склада) и дату принятия сотрудника 2 (DD/MM/YY): \n";
    cin >> emp2.num; cout << " ";
    cin >> emp2.pay; cout << " ";
    cin >> chETYPE2; cout << " ";
        switch(chETYPE2)
        {
         case '1':     w21++; break;
         case '2':     w22++; break;
         case '3':     w23++; break;
        }
    cin >> date2.day >> sCh1 >> date2.month >> sCh2 >> date2.year; cout << endl;

    cout << "Введите номер, зарплату, должность (1 - Секретарь, 2 - Исследователь ," // Ввод информации сотрудника 3
    << "\n3 - Начальник склада) и дату принятия сотрудника 3 (DD/MM/YY): \n";
    cin >> emp3.num; cout << " ";
    cin >> emp3.pay; cout << " ";
    cin >> chETYPE3; cout << " ";
        switch(chETYPE3)
        {
         case '1':     w31++; break;
         case '2':     w32++; break;
         case '3':     w33++; break;
        }
    cin >> date3.day >> sCh1 >> date3.month >> sCh2 >> date3.year; cout << endl;

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    cout << setiosflags(ios::left) << setw(11) << "Сотрудник " << setw(11)
    << "Зарплата " << setw(17) << "Должность " << setw(23) << "Дата принятия на работу" << endl;

    cout << setw(11) << emp1.num << setw(11) << emp1.pay << setw(11);   // Вывод информации сотрудника 1
    if(w11 == 1 && w12 == 0)
        cout << "Секретарь        ";
    else
        if(w12 == 1)
        cout << "Исследователь   ";
    else
    cout << "Начальник склада ";
    cout << date1.day << sCh2 << date1.month << sCh2 << date1.year << endl;

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

     cout << setw(11) << emp2.num << setw(11) << emp2.pay << setw(11);  // Вывод информации сотрудника 2
    if(w21 == 1)
        cout << "Секретарь        ";
    else
        if(w22 == 1)
        cout << "Исследователь    ";
    else
    cout << "Начальник склада ";
    cout << date2.day << sCh2 << date2.month << sCh2 << date2.year << endl;

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

     cout << setw(11) << emp3.num << setw(11) << emp3.pay << setw(11);  // Вывод информации сотрудника 3
    if(w31 == 1)
        cout << "Секретарь        ";
    else
        if(w32 == 1)
        cout << "Исследователь    ";
    else
    cout << "Начальник склада ";
    cout << date3.day << sCh2 << date3.month << sCh2 << date3.year << endl;

    return 0;
}

Последний раз редактировалось vitalezzz; 14.11.2015 в 03:33.
vitalezzz вне форума Ответить с цитированием
Старый 14.11.2015, 10:02   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну по-поводу сокращения:
Код:
#include <iostream>
#include <iomanip>

using namespace std;
///////////////////////////////////////////

struct employee
{
    int num;
    float pay;
};

///////////////////////////////////////////

    struct date
{
    int day;
    int month;
    int year;
};
    char sCh1;                                                 //
    char sCh2 = '/';                                           //
    int w[4][4]={0};           // Определение переменных
    employee emp[4]; // Определение структурных переменных
    date date[4];   
///////////////////////////////////////////
void inpu(int n){
    int k=0;
    cout << "Введите номер, зарплату, должность (1 - Секретарь, 2 - Исследователь," 
    << "\n3 - Начальник склада) и дату принятия сотрудника 1 (DD/MM/YY): \n";
    cin >> emp[n].num; cout << " ";
    cin >> emp[n].pay; cout << " ";
    cin >> k; cout << " ";
    w[n][chETYPE1]++;
    cin >> date[n].day >> sCh1 >> date[n].month >> sCh2 >> date[n].year; cout << endl;
};

void outp(int n){

    cout << setiosflags(ios::left) << setw(11) << "Сотрудник " << setw(11)
    << "Зарплата " << setw(17) << "Должность " << setw(23) << "Дата принятия на работу" << endl;

    cout << setw(11) << emp[n].num << setw(11) << emp[n].pay << setw(11);   // Вывод информации сотрудника 1
    if(w[n][1] == 1 && w[n][2] == 0)
        cout << "Секретарь        ";
    else
        if(w[n][2] == 1)
        cout << "Исследователь   ";
    else
    cout << "Начальник склада ";
    cout << date[n].day << sCh2 << date[n].month << sCh2 << date[n].year << endl;

}

int main()
{
    setlocale(LC_ALL, "RUS");

    for(i=1;i<4;i++) inp(i);
    for(i=1;i<4;i++) outp(i);
   
    cin.get();
    return 0;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.11.2015, 19:34   #3
vitalezzz
Новичок
Джуниор
 
Регистрация: 14.11.2015
Сообщений: 2
По умолчанию

Спасибо Вам!
vitalezzz вне форума Ответить с цитированием
Старый 14.11.2015, 20:27   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не за что )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача на зачёт. проблема Задача на нобелевскую премию! Sabotage5 Паскаль, Turbo Pascal, PascalABC.NET 2 18.03.2013 15:18
Задача по подсчёту статистики использования букв. Другая задача - по длинной арифметике Pascal ABC kimberly Паскаль, Turbo Pascal, PascalABC.NET 3 24.12.2012 17:03
Задача на оптимальный расчет маршрута (задача в презентации) в табличном процессоре Excel Toofed Помощь студентам 0 30.11.2011 01:12
Задача минимизации дисбаланса на линии сборки (задача минимакса) LenZab Microsoft Office Excel 13 13.03.2011 22:51