9 / 9 / 4
Регистрация: 07.11.2013
Сообщений: 63
1

Вызов метода объекта для проверки в конструкции switch-case

24.11.2014, 21:22. Показов 3805. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребят, каким образом создать объект и метод для него, чтобы в кейсах просто метод вызывать, а то с точки зрения ООП неверное получается...

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
switch (choose)
{
case "Lion": Animal Lion = new Animal();
Console.WriteLine("Введите оценку здоровья");
Lion.Health = Int32.Parse(Console.ReadLine());
Console.WriteLine("Введите оценку чистоты");
Lion.Clean = Int32.Parse(Console.ReadLine());
Console.WriteLine("Введите оценку сытости");
Lion.Training = Int32.Parse(Console.ReadLine());
Console.WriteLine(Lion.Itogi());
Console.WriteLine("\nОцените следующее животное или введите 4 для выхода\n");
AnimalSostoyanie();
break;
case "Tiger": Animal Tiger = new Animal();
Console.WriteLine("Введите оценку здоровья");
Tiger.Health = Int32.Parse(Console.ReadLine());
Console.WriteLine("Введите оценку чистоты");
Tiger.Clean = Int32.Parse(Console.ReadLine());
Console.WriteLine("Введите оценку сытости");
Tiger.Training = Int32.Parse(Console.ReadLine());
Console.WriteLine(Tiger.Itogi());
Console.WriteLine("\nОцените следующее животное или введите 4 для выхода\n");
AnimalSostoyanie();
break;
case "Giraffie": Animal Giraffie = new Animal();
Console.WriteLine("Введите оценку здоровья");
Giraffie.Health = Int32.Parse(Console.ReadLine());
Console.WriteLine("Введите оценку чистоты");
Giraffie.Clean = Int32.Parse(Console.ReadLine());
Console.WriteLine("Введите оценку сытости");
Giraffie.Training = Int32.Parse(Console.ReadLine());
Console.WriteLine(Giraffie.Itogi());
Console.WriteLine("\nОцените следующее животное или введите 4 для выхода\n");
AnimalSostoyanie();
break;
case "exit":
break;
}
}
Весь код:
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
using System;
namespace event
{
 
 
 
    public delegate void AnimalStatusMethod();
    class Animal
    {
        public int clean { get; set; }
        public int health { get; set; }
        public int training { get; set; }
 
 
        public int Clean
        {
            set 
            {   if (clean < 1)
                throw new ArgumentOutOfRangeException("Недопустимый ввод");
            clean = value;
            if (clean > 10)
                throw new ArgumentOutOfRangeException("Недопустимый ввод");
            clean = value;
            if (clean < 7)
                Console.WriteLine("Животное нужно помыть");
            else Console.WriteLine("Животное находится в хорошем чистом состоянии");    
            
                clean = value;
            
            }
            get
            {
                return clean;
            }
        }
 
        public int Health
        {
            set
            {
                if ((health < 1) || (health > 5))
                
                    throw new ArgumentOutOfRangeException("Значение должно быть по пятибальной системе");
                health = value;
                
                if ((health < 4) && (health > 0))
                {
                    Console.WriteLine("Животное нужно вылечить");
                    health = value;
                }
                health = value;
            }
            get
            {
                return health;
            }
        }
 
        public int Training
        {
            set
            {
                if ((value < 1) || (value > 5))
                
                    throw new ArgumentOutOfRangeException("Значение должно быть по пятибальной системе");
                    training = value;
                
                if ((value < 4) && (value > 0))
                {
                    Console.WriteLine("Животное нужно покормить, оно выглядит агрессивным");
                    training = value;
                }
                training = value;
            }
            get
            {
                return training;
            }
        }
 
 
 
        public string Itogi()
        {
            if ((clean == 5) && (training == 5) && (health == 5))
                return "Посетители в восторге";
            else
            {
                if ((clean < 3) && (training < 3) && (health < 3))
                {
                    return "Животное в ужасном состоянии, скоро вы потеряете поситителей \n";
                }
                return "Посетители удовлетворены, но нужно стремится к лучшему";
            }
        }
        
 
    }
 
 
    class AnimalStatus : Animal
    {
        public static void AnimalSostoyanie()
        {
            Animal Lion = new Animal();
            Animal Tiger = new Animal();
            Animal Giraffie = new Animal();
 
            Console.WriteLine("Из зоопарка XXXXX были выбраны 4 вида животных для показа"
                   + "\n различных трюков на международном фестивале YYYYY-2015 ");
            Console.WriteLine("Инспекция выбрала 4 вида животных: Tiger, Elephant, Lion, Giraffie");
            Console.WriteLine();
 
            Console.WriteLine("Выберите одно из животных для оценки: ");
            string choose = (Console.ReadLine());
 
            switch (choose)
            {
                case "Lion": 
                    Console.WriteLine("Введите оценку здоровья");
                    Lion.Health = Int32.Parse(Console.ReadLine());
                    Console.WriteLine("Введите оценку чистоты");
                    Lion.Clean = Int32.Parse(Console.ReadLine());
                    Console.WriteLine("Введите оценку сытости");
                    Lion.Training = Int32.Parse(Console.ReadLine());
                    Console.WriteLine(Lion.Itogi());
                    Console.WriteLine("\nОцените следующее животное или введите 4 для выхода\n");
                    AnimalSostoyanie();
                    break;
                case "Tiger":
                    Console.WriteLine("Введите оценку здоровья");
                    Tiger.Health = Int32.Parse(Console.ReadLine());
                    Console.WriteLine("Введите оценку чистоты");
                    Tiger.Clean = Int32.Parse(Console.ReadLine());
                    Console.WriteLine("Введите оценку сытости");
                    Tiger.Training = Int32.Parse(Console.ReadLine());
                    Console.WriteLine(Tiger.Itogi());
                    Console.WriteLine("\nОцените следующее животное или введите 4 для выхода\n");
                    AnimalSostoyanie();
                    break;
                case "Giraffie": 
                    Console.WriteLine("Введите оценку здоровья");
                    Giraffie.Health = Int32.Parse(Console.ReadLine());
                    Console.WriteLine("Введите оценку чистоты");
                    Giraffie.Clean = Int32.Parse(Console.ReadLine());
                    Console.WriteLine("Введите оценку сытости");
                    Giraffie.Training = Int32.Parse(Console.ReadLine());
                    Console.WriteLine(Giraffie.Itogi());
                    Console.WriteLine("\nОцените следующее животное или введите 4 для выхода\n");
                    AnimalSostoyanie();
                    break;
                case "exit":
                    break;
            }
        }
 
        public static void Posetiteli()
        {
            int p;
            Console.WriteLine("Какое количество посетителей в данный момент " + DateTime.Now.ToString());
            p = Int32.Parse(Console.ReadLine());
            if (p > 100)
            {
                Console.WriteLine("Отличный результат");
            }
            else
            {
                Console.WriteLine("Вам нужно улучшать результат");
            }
            Console.WriteLine("Прибыль равна " + p * 5 + "$");
        }
    }
 
 
    public class ZooEvent
    {
        public event AnimalStatusMethod activate;
        public void ActivateEvent()
        {
            if (activate != null) activate();
        }
    }
    class Program
    {
 
        public static void Main()
        {
            ZooEvent zooEvent = new ZooEvent();
            zooEvent.activate += new AnimalStatusMethod(AnimalStatus.Posetiteli);
            zooEvent.activate += new AnimalStatusMethod(AnimalStatus.AnimalSostoyanie);
 
 
            zooEvent.ActivateEvent();
 
 
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.11.2014, 21:22
Ответы с готовыми решениями:

Ошибки при создании объекта внутри switch case
Всем добрый день! Имеем кусочек текста SprListAdd formadd = new SprListAdd(); ...

Использование конструкции выбора switch для вывода элементов окружности
Столкнулся с таким вот заданием, не знаю как сделать на C# Заранее спасибо :) Задание: Элементы...

Несколько цифр для case в switch'e
Решил объеденить два условия для case и сделать так: case 1, 3:{ } case2: ... Но...

Метод switch/case для рекомендаций по оптимальному весу
Написать программу, которая вычисляет оптимальный вес пользователя сравнивая его с реальным и...

6
45 / 45 / 32
Регистрация: 15.04.2011
Сообщений: 187
24.11.2014, 21:51 2
Skipper Ok,
Что-то вроде этого
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
 public static void Main()
        {
            switch (че-то там)
            {
                case что-то:
                    Animal Lion = new Animal();
                    EnterData(ref Lion);
                    break;
            }
        }
        public void EnterData(ref Lion)
        {
            
            Console.WriteLine("Введите оценку здоровья");
            Lion.Health = Int32.Parse(Console.ReadLine());
            Console.WriteLine("Введите оценку чистоты");
            Lion.Clean = Int32.Parse(Console.ReadLine());
            Console.WriteLine("Введите оценку сытости");
            Lion.Training = Int32.Parse(Console.ReadLine());
            Console.WriteLine(Lion.Itogi());
            Console.WriteLine("\nОцените следующее животное или введите 4 для выхода\n");
            AnimalSostoyanie();
            return Lion;
        }
0
9 / 9 / 4
Регистрация: 07.11.2013
Сообщений: 63
24.11.2014, 22:50  [ТС] 3
Не подходит такая схема, не работает...можно даже применить if в данном случае...
Суть-то в том, что я хочу убрать этот громоздкий код и одним методом все это сделать, но в укороченном виде естественно, идей null:

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
 public static void AnimalSostoyanie()
        {
            Animal Lion = new Animal();
            Animal Tiger = new Animal();
            Animal Giraffie = new Animal();
 
            Console.WriteLine("Из зоопарка XXXXX были выбраны 4 вида животных для показа"
                   + "\n различных трюков на международном фестивале YYYYY-2015 ");
            Console.WriteLine("Инспекция выбрала 4 вида животных: Tiger, Elephant, Lion, Giraffie");
            Console.WriteLine();
 
            Console.WriteLine("Выберите одно из животных для оценки: ");
            string choose = (Console.ReadLine());
 
            switch (choose)
            {
                case "Lion": 
                    Console.WriteLine("Введите оценку здоровья");
                    Lion.Health = Int32.Parse(Console.ReadLine());
                    Console.WriteLine("Введите оценку чистоты");
                    Lion.Clean = Int32.Parse(Console.ReadLine());
                    Console.WriteLine("Введите оценку сытости");
                    Lion.Training = Int32.Parse(Console.ReadLine());
                    Console.WriteLine(Lion.Itogi());
                    Console.WriteLine("\nОцените следующее животное или введите 4 для выхода\n");
                    AnimalSostoyanie();
                    break;
                case "Tiger":
                    Console.WriteLine("Введите оценку здоровья");
                    Tiger.Health = Int32.Parse(Console.ReadLine());
                    Console.WriteLine("Введите оценку чистоты");
                    Tiger.Clean = Int32.Parse(Console.ReadLine());
                    Console.WriteLine("Введите оценку сытости");
                    Tiger.Training = Int32.Parse(Console.ReadLine());
                    Console.WriteLine(Tiger.Itogi());
                    Console.WriteLine("\nОцените следующее животное или введите 4 для выхода\n");
                    AnimalSostoyanie();
                    break;
                case "Giraffie": 
                    Console.WriteLine("Введите оценку здоровья");
                    Giraffie.Health = Int32.Parse(Console.ReadLine());
                    Console.WriteLine("Введите оценку чистоты");
                    Giraffie.Clean = Int32.Parse(Console.ReadLine());
                    Console.WriteLine("Введите оценку сытости");
                    Giraffie.Training = Int32.Parse(Console.ReadLine());
                    Console.WriteLine(Giraffie.Itogi());
                    Console.WriteLine("\nОцените следующее животное или введите 4 для выхода\n");
                    AnimalSostoyanie();
                    break;
                case "exit":
                    break;
            }
        }
0
45 / 45 / 32
Регистрация: 15.04.2011
Сообщений: 187
24.11.2014, 23:08 4
Skipper Ok, То что внутри кейсов унифицируй и засунь в функцию, в чем проблема то?
0
9 / 9 / 4
Регистрация: 07.11.2013
Сообщений: 63
24.11.2014, 23:38  [ТС] 5
да делаю все вроде бы так, но компилировать не хочет...ошибки странные (отсутствует "}", то "пропущена директива using и прочее)
0
45 / 45 / 32
Регистрация: 15.04.2011
Сообщений: 187
24.11.2014, 23:41 6
Skipper Ok, так исправь о0 Ну или если не понимаешь что за ошибки скинь сообщения компилятора
0
9 / 9 / 4
Регистрация: 07.11.2013
Сообщений: 63
24.11.2014, 23:53  [ТС] 7
ладно, постараюсь разобраться кое-как...
0
24.11.2014, 23:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.11.2014, 23:53
Помогаю со студенческими работами здесь

Почему не может использоваться command в качестве case для switch?
Почему не может использоваться command в качестве case для switch? using System; using...

о конструкции switch case
если в данной конструкции в операторный список для case не поставить break, управление передается в...

Не работает Process::Start в конструкции Switch Case
Не понимаю почему не работает Process::Start в C++ Builder...

Вызов метода для объекта (ооп с++)
Доброе время суток! У меня есть класс class Player {...} есть объект Player user; Есть...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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