/* Programa: Este programa determina los terminales de las
placas de los vehículos que les toca recibir gasolina
subsidiada en Venezuela en base a una fecha ingresada.
(rango 09 de Octubre de 2026 a 31 de dic de 2080)
Elaborado por Carlos Ferrer
Rev: 09 Oct del 2026 (Modelo A)
*/
#include <iostream>
#include <locale.h>
using namespace std;
main()
{
setlocale (LC_ALL,"spanish");
Repetir:
// Inicializamos las Variables día, mes y año a buscar
int a_b = 0;
int mes_b = 0;
int dia_b = 0;
// Variable que indica si el año es bisiesto
bool Bisiesto;
// Cantidad de días del mes en curso
int dia_m;
/* Establecemos la fecha de arranque 09 de Octubre de 2026 y las placas = 1
(1= 1, 2 y 3 2= 4 y 5 3= 6,7 y 8 4= 9 y 0)
*/
system ("cls");
int dia = 9;
int mes = 10;
int a = 2026;
int placas = 1;
string aux;
string aux2[12] = {"Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"};
// Solicitamos el año a buscar
while (a_b < 2026 or a_b > 2080)
{
cout << "Ingrese año a buscar = ";
cin >> a_b;
if (a_b < 2025 or a_b > 2080)
{
system("cls");
cout << "Alerta fuera de rango!!!"<<endl;
cout << "debe pertenecer al rango (21 de mar de 2025 a 31 de dic 2080)"<<endl<<endl;
}
}
// Solicitamos el mes a buscar
while (mes_b < 1 or mes_b > 12 or (a_b == 2025 and mes_b < 3))
{
cout << "Ingrese mes a buscar = ";
cin >> mes_b;
if (mes_b < 1 or mes_b > 12 or (a_b == 2025 and mes_b < 3))
{
system("cls");
cout << "Alerta mes fuera de rango!!"<<endl;
cout << "debe pertenecer al rango (21 de mar de 2025 a 31 de dic 2080)"<<endl<<endl;
}
}
/* Averiguamos si el año es bisiesto
Un año es bisiesto si se cumple cualquiera de las siguientes dos condiciones:
(1) es divisible entre 4 y no lo es entre 100
(2) es divisible entre 4, 100 y 400 */
Bisiesto = ((a_b % 4 == 0 and a_b % 100 != 0) or (a_b % 4 == 0 and a_b % 100 == 0 and a_b % 400 == 0));
// Si es un mes de treinta días establecemos su duración en 30
if (mes_b == 11 or mes_b == 4 or mes_b == 6 or mes_b == 9)
{
dia_m = 30;
}
// Si el año es Bisiesto establecemos que febrero dura 29 días
else if (mes_b == 2 and Bisiesto)
{
dia_m = 29;
}
// Si el año NO es Bisiesto establecemos que febrero dura 28 días
else if (mes_b == 2 and !Bisiesto)
{
dia_m = 28;
}
// Si es un mes de treinta y un días establecemos su duración en 31
else
{
dia_m = 31;
}
// Solicitamos el día a buscar
while (dia_b < 1 or dia_b > dia_m or (a_b == 2025 and mes_b == 3 and dia_b < 21))
{
cout << "Ingrese dia a buscar = ";
cin >> dia_b;
if (dia_b < 1 or dia_b > dia_m or (a_b == 2025 and mes_b == 3 and dia_b < 21))
{
system("cls");
cout << "Alerta dia fuera de rango!!"<<endl;
cout << "debe pertenecer al rango (21 de mar de 2025 a 31 de dic 2080)"<<endl<<endl;
}
}
/* Barremos todas las fechas desde el 01 de Octubre 2024
Hasta conseguir la fecha buscada*/
while (a <= 2080)
{
// Determinamos si el año en movimiento es bisiesto
Bisiesto = ((a % 4 == 0 and a % 100 != 0) or (a % 4 == 0 and a % 100 == 0 and a % 400 == 0));
// Si la fecha es igual a la buscada nos salimos del ciclo
if (a == a_b and mes == mes_b and dia == dia_b)
{
break; //instrucción que te saca del ciclo
}
// De lo contrario incrementamos el día de la semana
dia=dia+1;
placas=placas+1;
// Verificamos un cambio de mes
if (dia == 31 and (mes == 11 or mes == 6 or mes == 4 or mes == 9))
{
dia = 1;
mes=mes+1;
}
else if (dia == 29 and mes == 2 and !Bisiesto)
{
dia = 1;
mes=mes+1;
}
else if (dia == 30 and mes == 2 and Bisiesto)
{
dia = 1;
mes=mes+1;
}
else if (dia == 32)
{
dia = 1;
mes=mes+1;
}
// Verificamos un cambio de año
if (mes == 13)
{
mes = 1;
a=a+1;
}
// Verificamos el reseteo del ciclo
if (placas == 5)
{
placas = 1;
}
}
// Imprimimos el resultado
if (placas == 1)
{
aux = "1, 2 y 3";
}
if (placas == 2)
{
aux = "4 y 5";
}
if (placas == 3)
{
aux = "6, 7 y 8";
}
if (placas == 4)
{
aux = "9 y 0";
}
cout <<endl;
cout << "El " << dia << " del mes de " << aux2[mes-1] << " de " << a << " surtiran"<<endl;
cout << "gasolina los vehiculos con placas que finalicen en: " << aux <<endl;
cout <<endl;
system("pause");
goto Repetir;
}
No hay comentarios.:
Publicar un comentario