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

Как правильно впихнуть и использовать перечисления в структуре? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ итерационный цикл http://www.cyberforum.ru/cpp-beginners/thread653537.html
Всем привет, сижу, не могу понять как сделать функцию для поиска суммы ряда. вот задание : Разработать алгоритм и составить программу вычисления значений суммы S заданного ряда при различных значениях аргумента Х: во внутреннем цикле для фиксированного значения Х поочередно суммировать члены ряда, пока их абсолютная величина превышает заданную точность eps. Вычисление очередного член ряда...
C++ Функция.Ряд тейлора для експоненты Заранее прошу искреннего извинения за свою дурость, но все таки, ctrl+c ctrl+v не хочу заниматся, и сообственно в чем проблемма, написал функция для нахождения експоненты Ех через разложение в ряд тейлора, и с положительными числами она работает на ура, но с отрецательными чем больше х тем хуже результат, подскажите где не прав...заранее большое спасибо. template <typename any> any EXP(any... http://www.cyberforum.ru/cpp-beginners/thread653532.html
C++ Путём перестановки элементов матрицы поместить её максимальный элемент в левый верхний угол
Помогите пожалуйста бездарю( дана целочисленная квадратная матрица размером 4х4 написать программу, содержащую функцию, которая путём перестановки элементов помещает её максимальный элемент в левый верхний угол, следующий по величине- в озицию (2,2) следующий (3,3) и тд заполнив таким образом всю главную диагональ. Если можно то с коментариями особо сложных строк написал только часть да и то...
Перевод матрицы в одномерный массив, динамическое выделение памяти для матрицы C++
Здравствуйте. Никак не могу разобраться с этой программой. Вот код: /********************** Файл LAB2.H *************************/ /* Описание функций и внешних переменных файла LAB2.C */ extern int L2_RESULT; /* Глобальна переменна - флаг ошибки */ /***** Выделение памяти под матрицу */ int creat_matr ( int N ); /***** Чтение элемента матрицы по заданным координатам */ int...
C++ Динамический массив http://www.cyberforum.ru/cpp-beginners/thread653490.html
Распечатать элементы динамического массива mas в одномерный динамический a. 1 по правым диагоналям, начиная с правого верхнего элемента 2 по спирали, начиная с центрального элемента Массив забила элементами, а с алгоритмом не могу разобраться( #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <time.h>
C++ Объясните как работает _getch() со стрелками Я недавно начал учить С++ и я совершенно не понимаю как эта функция работает со стрелками. Например код вида char ch; ch=_getch(); cout<<ch; _getch(); Сразу же закроется при первом нажатии стрелки, но с другими кнопками клавиатуры всё нормально. Ещё, эта функция при таком коде char ch; подробнее

Показать сообщение отдельно
FliXis
31 / 31 / 2
Регистрация: 17.09.2012
Сообщений: 163
03.10.2012, 22:52  [ТС]     Как правильно впихнуть и использовать перечисления в структуре?
Дошел до функций и ради эксперимента решил попробовать немного переделать эту прогу.
Хотел заменить блоки с строки 42 по 47, с 52 по 57, с 62 по 67 - функция void diss (employee);
и блоки с строчки 74 по 82, с 86 по 94, с 98 по 106 - функция void disp (employee);
p.s. указанные строчки верны для старого листинга который чуть выше того, что внизу.

сперва делал функцию void disp (employee); Все отлично скомпилилось. Как только добавил функцию void disp (employee); начал жаловаться на неинициализированность переменных worler1, worker2, worker3 в стрчоках 44, 50, 56.

Возникает вопрос: Вся проблема в этом? -

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct employee
{
    int number;
    float money;
 
    int d;
    int m;
    int y;
 
    enum etupe { laborer, secretary, manager, accountant, executive, researcher };
    etupe pro;
};
///////////////////////////////////////////////////////////////////////
void diss (employee);
void disp (employee);
Нельзя принимать значения одной структуры двум разным функциям с фактически одними и теми же переменными этой структуры?

Весь код:

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
// Test_Project.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
using namespace std;
 
///////////////////////////////////////////////////////////////////////
struct employee
{
    int number;
    float money;
 
    int d;
    int m;
    int y;
 
    enum etupe { laborer, secretary, manager, accountant, executive, researcher };
    etupe pro;
};
///////////////////////////////////////////////////////////////////////
void diss (employee);
void disp (employee);
 
int main ()
{
    system("chcp 1251 >nul");
 
    char ch='/';
    int ch2, ch3=0, ch4=0, ch5=0;
 
    employee worker1, worker2, worker3;
 
    do
    {
        cout << "Выберите сотрудника(1, 2, 3)\nЛибо введите \"4\" для вывода данных: ";
        cin >> ch2;
 
        switch(ch2)
        {
            case 1:
                {
                    cout << "\nПервый сотрудник.\n";
                    diss(worker1);
                    ch3++; continue;
                }
            case 2:
                {
                    cout << "\nВторой сотрудник.\n";
                    diss(worker2);
                    ch4++; continue;
                }
            case 3:
                {
                    cout << "\nТретий сотрудник.\n";
                    diss(worker3);
                    ch5++; continue;
                }
            case 4: 
                {
                    if(ch3>0 && ch4>0 && ch5>0)
                    {
                        cout << endl << "\nПервый сотрудник под номером " << worker1.number << " Зарплата: " << worker1.money << "\nДолжность: ";
                        disp(worker1);
 
                        cout << endl << "Второй сотрудник под номером " << worker2.number << " Зарплата: " << worker2.money << "\nДолжность: ";
                        disp(worker2);
 
                        cout << endl << "Третий сотрудник под номером " << worker3.number << " Зарплата: " << worker3.money << "\nДолжность: ";
                        disp(worker3); break;
                    }
                    else
                    {
                        cout << "Вы ввели не все данные!"; break;
                    }
                }
            default: cout << "Вы ввели неверное значение!"; break;
        }
        cout << "\n\nПродолжить?(y/n): ";
        cin>> ch; cout << endl;
    }
    while(ch !='n');
 
 return 0;
}
///////////////////////////////////////////////////////////////////////
void diss(employee ddd)
{
    char ch1='/';
    cout << "Введите номер и величину зарплаты: ";
    cin >> ddd.number >> ddd.money;
    cout << "Введите первую букву должности\n(laborer, secretary, manager, accountant, executive, researcher): ";
    cin >> (char&)ddd.pro;
    cout << "Введите дату поступления на работу формата(день/месяц/год): ";
    cin >> ddd.d >> ch1 >> ddd.m >> ch1 >> ddd.y; cout << endl;
}
///////////////////////////////////////////////////////////////////////
void disp(employee dd)
{
switch((char&)dd.pro)
    {
        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;
    }
cout << "Дата устройства: " << dd.d << "/" << dd.m << "/" << dd.y << endl;
}
///////////////////////////////////////////////////////////////////////
 
Текущее время: 02:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru