1
+ // Autor: Héctor Adán
2
+ // GitHub: https://github.com/hectorio23
3
+ #include < iostream>
4
+ #include < string>
5
+
6
+ /*
7
+ * EJERCICIO:
8
+ * Empleando tu lenguaje, explora la definición del tipo de dato
9
+ * que sirva para definir enumeraciones (Enum).
10
+ * Crea un Enum que represente los días de la semana del lunes
11
+ * al domingo, en ese orden. Con ese enumerado, crea una operación
12
+ * que muestre el nombre del día de la semana dependiendo del número entero
13
+ * utilizado (del 1 al 7).
14
+ *
15
+ * DIFICULTAD EXTRA (opcional):
16
+ * Crea un pequeño sistema de gestión del estado de pedidos.
17
+ * Implementa una clase que defina un pedido con las siguientes características:
18
+ * - El pedido tiene un identificador y un estado.
19
+ * - El estado es un Enum con estos valores: PENDIENTE, ENVIADO, ENTREGADO y CANCELADO.
20
+ * - Implementa las funciones que sirvan para modificar el estado:
21
+ * - Pedido enviado
22
+ * - Pedido cancelado
23
+ * - Pedido entregado
24
+ * (Establece una lógica, por ejemplo, no se puede entregar si no se ha enviado, etc...)
25
+ * - Implementa una función para mostrar un texto descriptivo según el estado actual.
26
+ * - Crea diferentes pedidos y muestra cómo se interactúa con ellos.
27
+ */
28
+
29
+
30
+ // Definición del enum para los días de la semana
31
+ // Usamos enum class para tener un mejor manejo de ámbitos
32
+ enum class DiaSemana {
33
+ Lunes = 1 ,
34
+ Martes,
35
+ Miercoles,
36
+ Jueves,
37
+ Viernes,
38
+ Sabado,
39
+ Domingo
40
+ };
41
+
42
+ // Función para obtener el nombre del día de la semana a partir del número
43
+ std::string obtenerNombreDiaSemana (int numeroDia) {
44
+ switch (numeroDia) {
45
+ case static_cast <int >(DiaSemana::Lunes):
46
+ return " Lunes" ;
47
+ case static_cast <int >(DiaSemana::Martes):
48
+ return " Martes" ;
49
+ case static_cast <int >(DiaSemana::Miercoles):
50
+ return " Miércoles" ;
51
+ case static_cast <int >(DiaSemana::Jueves):
52
+ return " Jueves" ;
53
+ case static_cast <int >(DiaSemana::Viernes):
54
+ return " Viernes" ;
55
+ case static_cast <int >(DiaSemana::Sabado):
56
+ return " Sábado" ;
57
+ case static_cast <int >(DiaSemana::Domingo):
58
+ return " Domingo" ;
59
+ default :
60
+ return " Número de día inválido" ;
61
+ }
62
+ }
63
+
64
+ // Definición del Enum para los estados de pedido
65
+ enum class EstadoPedido {
66
+ PENDIENTE,
67
+ ENVIADO,
68
+ ENTREGADO,
69
+ CANCELADO
70
+ };
71
+
72
+ // Clase Pedido
73
+ class Pedido {
74
+ private:
75
+ int id;
76
+ EstadoPedido estado;
77
+
78
+ public:
79
+ // Constructor
80
+ Pedido (int _id) : id(_id), estado(EstadoPedido::PENDIENTE) {}
81
+
82
+ // Función para marcar el pedido como enviado
83
+ void marcarEnviado () {
84
+ if (estado == EstadoPedido::PENDIENTE) {
85
+ estado = EstadoPedido::ENVIADO;
86
+ std::cout << " El pedido con ID " << id << " ha sido enviado.\n " ;
87
+ } else {
88
+ std::cout << " El pedido con ID " << id << " no se puede enviar en su estado actual.\n " ;
89
+ }
90
+ }
91
+
92
+ // Función para marcar el pedido como entregado
93
+ void marcarEntregado () {
94
+ if (estado == EstadoPedido::ENVIADO) {
95
+ estado = EstadoPedido::ENTREGADO;
96
+ std::cout << " El pedido con ID " << id << " ha sido entregado.\n " ;
97
+ } else {
98
+ std::cout << " El pedido con ID " << id << " no se puede entregar en su estado actual.\n " ;
99
+ }
100
+ }
101
+
102
+ // Función para cancelar el pedido
103
+ void cancelarPedido () {
104
+ if (estado != EstadoPedido::CANCELADO) {
105
+ estado = EstadoPedido::CANCELADO;
106
+ std::cout << " El pedido con ID " << id << " ha sido cancelado.\n " ;
107
+ } else {
108
+ std::cout << " El pedido con ID " << id << " ya está cancelado.\n " ;
109
+ }
110
+ }
111
+
112
+ // Función para mostrar el estado del pedido
113
+ void mostrarEstado () {
114
+ std::string estado_str;
115
+ switch (estado) {
116
+ case EstadoPedido::PENDIENTE:
117
+ estado_str = " Pendiente" ;
118
+ break ;
119
+ case EstadoPedido::ENVIADO:
120
+ estado_str = " Enviado" ;
121
+ break ;
122
+ case EstadoPedido::ENTREGADO:
123
+ estado_str = " Entregado" ;
124
+ break ;
125
+ case EstadoPedido::CANCELADO:
126
+ estado_str = " Cancelado" ;
127
+ break ;
128
+ }
129
+ std::cout << " Estado del pedido con ID " << id << " : " << estado_str << " \n " ;
130
+ }
131
+ };
132
+
133
+ int main () {
134
+
135
+ std::cout << " ******** EJERCICIO ********\n " ;
136
+ int numeroDia;
137
+
138
+ std::cout << " Ingrese un número de día de la semana (del 1 al 7): " ;
139
+ std::cin >> numeroDia;
140
+
141
+ // Mostrar el nombre del día de la semana correspondiente
142
+ std::cout << " El día de la semana es: " << obtenerNombreDiaSemana (numeroDia) << " \n " ;
143
+
144
+
145
+ std::cout << " \n ********** EJERCICIO EXTRA **********\n " ;
146
+ // Crear pedidos
147
+ Pedido pedido1 (1 );
148
+ Pedido pedido2 (2 );
149
+
150
+ // Mostrar el estado inicial de los pedidos
151
+ pedido1.mostrarEstado ();
152
+ pedido2.mostrarEstado ();
153
+
154
+ // Interactuar con los pedidos
155
+ pedido1.marcarEnviado ();
156
+ pedido2.marcarEnviado ();
157
+ pedido1.marcarEntregado ();
158
+ pedido2.cancelarPedido ();
159
+
160
+ // Mostrar el estado final de los pedidos
161
+ pedido1.mostrarEstado ();
162
+ pedido2.mostrarEstado ();
163
+
164
+ return 0 ;
165
+ }
0 commit comments