Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/32: Рейтинг темы: голосов - 32, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 21.11.2010
Сообщений: 24
1

Структуры и перечисления

20.02.2011, 16:23. Показов 6448. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот условия задания:
1. Создать перечисление должностей Vacancies {Manager, Boss, Clerk, Salesman, etc.}
2. Создать структуру «Employee» состоящую из:
- поля name строкового типа;
- поля vacancy типа Vacancies;
- поля зарплата целого типа;
- поля дата приема на работу типа int[3].
3. В классе Program создать массив сотрудников. Длина массива задается пользователем, заполнение массива производится им же. Выполнить следующее:
- вывести полную информацию обо всех сотрудниках;
- найти в массиве всех менеджеров, зарплата которых больше средней зарплаты всех клерков, вывести на экран полную информацию о таких менеджерах отсортированной по их фамилии.
- распечатать информацию обо всех сотрудниках, принятых на работу позже босса, отсортированную в алфавитном порядке по фамилии сотрудника.

Ниже идет тело программы (я разделил на отдельные классы для удобства)
Помогите, пожалуйста, разобраться в этой программе. Вопросы я разместил в комментариях около непонятных мне строк.


Структура
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Лабораторная_работа_1.Структуры
{
    struct Employee
    {
        string name; 
        Vacancies vacancy;
        int salary;
        public int[] date;
        public string Name                 // Что принимают, а что возвращают эти свойства?
        {
            get
            {
                return name;
            }
            set
            {
                this.name = value;
            }
        }
        public Vacancies Vacancy
        {
            get
            {
                return vacancy;
            }
            set
            {
                this.vacancy = value;
            }
        }
        public int Salary
        {
            get
            {
                return salary;
            }
            set
            {
                this.salary = value;
            }
        }
        public int Day
        {
            get
            {
                return date[0];
            }
            set
            {
                this.date[0] = value;
            }
        }
        public int Month
        {
            get
            {
                return date[1];
            }
            set
            {
                this.date[1] = value;
            }
        }
        public int Year
        {
            get
            {
                return date[2];
            }
            set
            {
                this.date[2] = value;
            }
        }
        public override string ToString() //что означает эта строка?
        {
            return name + "  " + vacancy + "  " + salary.ToString() + "  " + date[0].ToString() + "." + date[1].ToString() + "." + date[2].ToString();
        }
    }
}
и класс Program
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Лабораторная_работа_1.Структуры
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите размерность массива");// количество человек - сотрудников
            int n = int.Parse(Console.ReadLine());
            Employee[] massiv = new Employee[n];// создание массива типа Employee
            for (int i = 0; i < n; i++)
            {
                massiv[i].date = new int[3];
                if (i == 0)
                {
                    Console.WriteLine("Введите информацию о боссе - 0 сотруднике");
                    Console.WriteLine("Введите имя");
                    massiv[i].Name = Console.ReadLine();
                    massiv[i].Vacancy = Vacancies.Boss;
                    Console.WriteLine("Введите заработную плату");
                    massiv[i].Salary = int.Parse(Console.ReadLine());
                    Console.WriteLine("Введите день приема на работу");
                    massiv[i].Day = int.Parse(Console.ReadLine());
                    Console.WriteLine("Введите месяц приема на работу");
                    massiv[i].Month = int.Parse(Console.ReadLine());
                    Console.WriteLine("Введите год приема на работу");
                    massiv[i].Year = int.Parse(Console.ReadLine());
                }
                else
                {
                    Console.WriteLine("Введите информацию о " + i + " сотруднике");
                    Console.WriteLine("Введите имя");
                    massiv[i].Name = Console.ReadLine();
                    Console.WriteLine("Введите должность 1-Manager, 2-Clerk, 3-Salesman ");
                    string a = Console.ReadLine();
                    switch (a)
                    {
                        case "1": massiv[i].Vacancy = Vacancies.Manager; break;
                        case "2": massiv[i].Vacancy = Vacancies.Clerk; break;
                        case "3": massiv[i].Vacancy = Vacancies.Salesman; break;
                    }
                    Console.WriteLine("Введите заработную плату");
                    massiv[i].Salary = int.Parse(Console.ReadLine());
                    Console.WriteLine("Введите день приема на работу");
                    massiv[i].Day = int.Parse(Console.ReadLine());
                    Console.WriteLine("Введите месяц приема на работу");
                    massiv[i].Month = int.Parse(Console.ReadLine());
                    Console.WriteLine("Введите год приема на работу");
                    massiv[i].Year = int.Parse(Console.ReadLine());
                }
            }
            for (int i = 1; i < n; i++)
            {
                for (int j = i; j < n - 1; j++)
                {
                    Employee temp;
                    if (massiv[j].Name.CompareTo(massiv[j + 1].Name) > 0)
                    {
                        temp = massiv[j];
                        massiv[j] = massiv[j + 1];
                        massiv[j + 1] = temp;
                    }
                }
            }
            bool check = true;
            do
            {
                Console.WriteLine("1- вывести информацию о сотрудниках; 2 - менеджеры, по зарплате; 3 - принятые после босса");
                string a = Console.ReadLine();
                switch (a)
                {
                    case "1"://выводит на экран все ячейки массива massiv, переведенные в стринговский формат
                        {
                            for (int i = 0; i < n; i++)
                            {
                                Console.WriteLine(massiv[i].ToString());
                            }
                        }
                        break;
                    case "2":
                        {
                            double midSalary = 0;
                            int s = 0;
                            for (int i = 0; i < n; i++)
                            {
                                if (massiv[i].Vacancy == Vacancies.Clerk)// от 0-го до последнего сотрудника, если его должность КЛЕРК
                                {
                                    midSalary = +massiv[i].Salary;//получаем всю сумму, выплачиваемую клеркам
                                    s++;// узнаем количество клерков
                                }
                            }
                            midSalary = midSalary / n;// почему делим на "n"? Нужно ведь на "s", разве нет?!
                            for (int i = 0; i < n; i++)
                            {
                                if (massiv[i].Vacancy == Vacancies.Manager && massiv[i].Salary > midSalary)
                                {
                                    Console.WriteLine("Имя менеджера " + massiv[i].Name + "  Зарплата - " + massiv[i].Salary + "  Дата приема на работу - " + massiv[i].Day + "." + massiv[i].Month + "." + massiv[i].Year);
                                }
                            }
                        }
                        break;
                    case "3":
                        {
                            for (int i = 1; i < n; i++)
                            {
                                if (massiv[i].Year > massiv[0].Year) Console.WriteLine(massiv[i].ToString());
                                else
                                {
                                    if (massiv[i].Month > massiv[0].Month) Console.WriteLine(massiv[i].ToString());
                                    else
                                    {
                                        if (massiv[i].Day > massiv[0].Day) Console.WriteLine(massiv[i].ToString());
                                    }
                                }//так как нулевые ячейки в *в чем?* занимает босс, то все итые ячейки сравниваем с ним
                            }
                        }
                        break;
                    default: check = false; break;//что означает default  ???!
                }
            }
            while (check);
            Console.ReadLine();
        }
    }
    enum Vacancies { Manager, Boss, Clerk, Salesman };//создаем перечисление
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.02.2011, 16:23
Ответы с готовыми решениями:

Структуры и перечисления
Поля структуры --------------------------- Фамилия, Имя, Отчество Пол Должность Дата рождения...

C# Структуры и Перечисления
Здравствуйте! Понял как нужно сделать перечисления, но не как не могу подумать как мне сделать...

Перечисления и структуры
Опишите функцию Name(G), определяющую имя мужчины из группы G с ростом x. Опишите функцию...

Перечисления, Структуры, Интерфейсы
Дан список абитуриентов: ФИО, специальность, на которую он поступает, оценка за экзамен 1, оценка...

3
Модератор
2904 / 1763 / 179
Регистрация: 19.02.2011
Сообщений: 6,477
20.02.2011, 16:30 2
// Что принимают, а что возвращают эти свойства?
Строку
//что означает эта строка?
Это переопределение метода ToString, т.е. преобразование данных в строку происходит таким способом, которым мы указываем.
//что означает default ???!
В случае если не сработало ни одно условие case принудительно срабатывает то, что описано как default, т.е. поведение по умолчанию.
0
0 / 0 / 0
Регистрация: 21.11.2010
Сообщений: 24
20.02.2011, 17:23  [ТС] 3
Спасибо, вот не допечатал вопрос в первом посте - еще пара вопросов ниже
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Лабораторная_работа_1.Структуры
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите размерность массива");
            int n = int.Parse(Console.ReadLine());
            Employee[] massiv = new Employee[n];
            for (int i = 0; i < n; i++)
            {
                massiv[i].date = new int[3];
                if (i == 0)
                {
                    Console.WriteLine("Введите информацию о боссе - 0 сотруднике");
                                  //как в теле самого if можно задать ззначение от которого зависит по какой ветке пойдет обработка? Я имею в виду 0.
                    Console.WriteLine("Введите имя");
                    massiv[i].Name = Console.ReadLine();
                    massiv[i].Vacancy = Vacancies.Boss;
                    Console.WriteLine("Введите заработную плату");
                    massiv[i].Salary = int.Parse(Console.ReadLine());
                    Console.WriteLine("Введите день приема на работу");
                    massiv[i].Day = int.Parse(Console.ReadLine());
                    Console.WriteLine("Введите месяц приема на работу");
                    massiv[i].Month = int.Parse(Console.ReadLine());
                    Console.WriteLine("Введите год приема на работу");
                    massiv[i].Year = int.Parse(Console.ReadLine());
                }
                else
                {
                    Console.WriteLine("Введите информацию о " + i + " сотруднике");
                    Console.WriteLine("Введите имя");
                    massiv[i].Name = Console.ReadLine();
                    Console.WriteLine("Введите должность 1-Manager, 2-Clerk, 3-Salesman ");
                    string a = Console.ReadLine();
                    switch (a)
                    {
                        case "1": massiv[i].Vacancy = Vacancies.Manager; break;
                        case "2": massiv[i].Vacancy = Vacancies.Clerk; break;
                        case "3": massiv[i].Vacancy = Vacancies.Salesman; break;
                    }
                    Console.WriteLine("Введите заработную плату");
                    massiv[i].Salary = int.Parse(Console.ReadLine());
                    Console.WriteLine("Введите день приема на работу");
                    massiv[i].Day = int.Parse(Console.ReadLine());
                    Console.WriteLine("Введите месяц приема на работу");
                    massiv[i].Month = int.Parse(Console.ReadLine());
                    Console.WriteLine("Введите год приема на работу");
                    massiv[i].Year = int.Parse(Console.ReadLine());
                }
            }
            for (int i = 1; i < n; i++)//Что означает этот цикл (и вложенный тоже) ???!
            {
                for (int j = i; j < n - 1; j++)
                {
                    Employee temp;
                    if (massiv[j].Name.CompareTo(massiv[j + 1].Name) > 0)
                    {
                        temp = massiv[j];
                        massiv[j] = massiv[j + 1];
                        massiv[j + 1] = temp;
                    }
                }
            }
            bool check = true;
            do
            {
                Console.WriteLine("1- вывести информацию о сотрудниках; 2 - менеджеры, по зарплате; 3 - принятые после босса");
                string a = Console.ReadLine();
                switch (a)
                {
                    case "1"://выводит на экран все ячейки массива massiv, переведенные в стринговский формат
                        {
                            for (int i = 0; i < n; i++)
                            {
                                Console.WriteLine(massiv[i].ToString());
                            }
                        }
                        break;
                    case "2":
                        {
                            double midSalary = 0;
                            int s = 0;
                            for (int i = 0; i < n; i++)
                            {
                                if (massiv[i].Vacancy == Vacancies.Clerk)// от 0-го до последнего сотрудника, если его должность КЛЕРК
                                {
                                    midSalary = +massiv[i].Salary;//получаем всю сумму, выплачиваемую клеркам
                                    s++;// узнаем количество клерков
                                }
                            }
                            midSalary = midSalary / n;// почему делим на "n"? Нужно ведь на "s", разве нет?!
                            for (int i = 0; i < n; i++)
                            {
                                if (massiv[i].Vacancy == Vacancies.Manager && massiv[i].Salary > midSalary)
                                {
                                    Console.WriteLine("Имя менеджера " + massiv[i].Name + "  Зарплата - " + massiv[i].Salary + "  Дата приема на работу - " + massiv[i].Day + "." + massiv[i].Month + "." + massiv[i].Year);
                                }
                            }
                        }
                        break;
                    case "3":
                        {
                            for (int i = 1; i < n; i++)
                            {
                                if (massiv[i].Year > massiv[0].Year) Console.WriteLine(massiv[i].ToString());
                                else
                                {
                                    if (massiv[i].Month > massiv[0].Month) Console.WriteLine(massiv[i].ToString());
                                    else
                                    {
                                        if (massiv[i].Day > massiv[0].Day) Console.WriteLine(massiv[i].ToString());
                                    }
                                }//так как нулевые ячейки в *в чем?* занимает босс, то все итые ячейки сравниваем с ним
                            }
                        }
                        break;
                    default: check = false; break;
                }
            }
            while (check);
            Console.ReadLine();
        }
    }
    enum Vacancies { Manager, Boss, Clerk, Salesman };
}
0
Модератор
2904 / 1763 / 179
Регистрация: 19.02.2011
Сообщений: 6,477
20.02.2011, 17:50 4
//как в теле самого if можно задать ззначение от которого зависит по какой ветке пойдет обработка? Я имею в виду 0.
Конструкция if(...) возвращает true или false, определяя по какому направлению далее пойдет исполнение программы. Ну и конечно есть альтернатива при записи вида
C#
1
2
3
4
5
if(...){//если условие выполнено
...
}else{//если условие не выполнено
...
}
//Что означает этот цикл (и вложенный тоже) ???!
i=1 - исходное значение переменной i (тип int)
i<n - код внутри цикла будет выполняться до тех пор, пока i меньше n
i++ - после каждого выполнения блока кода за один "проход" значение i будет увеличиваться на 1. Если этого не сделать цикл будет бесконечным, что не допустимо.
Ну а вложенный выполняет тоже самое
// почему делим на "n"? Нужно ведь на "s", разве нет?!
Я так понимаю нужно найти некий процент. В зависимости от того что в данном случае является массой, из которой происходит выборка, на то и нужно делить.
//так как нулевые ячейки в *в чем?* занимает босс, то все итые ячейки сравниваем с ним
В задачу сильно не вникал, в C# еще нуб - и недели от начала изучения не прошло, так что не копенгаген в данном вопросе.
0
20.02.2011, 17:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.02.2011, 17:50
Помогаю со студенческими работами здесь

Структуры Перечисления. Вывод автомобилей по дате техосмотра.
Вывести сведения о машинах, прошедших техосмотра менее года назад. 1.Марка автомобиля....

Структуры и перечисления: Вывести список очередности предоставления мест в общежитии
Здравствуйте. Кто-нибудь может помочь? Начала писать программу, дошла до определенного места, а...

Структуры и перечисления: необходимо организовать поиск в структуре по типу самолёта
Помогите пожалуйста отладить программу, в последнем цикле упорно выскакивает ошибка и не могу никак...

Структуры, Объединения, Перечисления
Реализовать программу для хранения информации о студентах одного потока. Предусмотреть следующие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru