Skip to content

Commit dd74364

Browse files
committed
#19 - C++
1 parent 51cf9fe commit dd74364

File tree

1 file changed

+165
-0
lines changed

1 file changed

+165
-0
lines changed
Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
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

Comments
 (0)