viernes, 9 de octubre de 2026

01k.- Programación I - Parcial Nro. 1 (2027 - I) - Modelo A (Solución del Profesor)

En Venezuela el gobierno venezolano implemento la venta de gasolina subsidiada por número de finalización de placa, sin embargo, el día de hoy el gobierno ha modificado el sistema. El gobierno ahora surtirá gasolina bajo el siguiente esquema

 

1er día carros cuyas placas terminen en 1,2 y 3

2do día carros cuyas placas terminen en 4 y 5

3er día carros cuyas placas terminen en 6 , 7 y 8

4to día carros cuyas placas terminen en 9 y 0

Y Luego se repite el ciclo nuevamente.

 

El Gobierno ejecutará este cambio a partir del viernes 9 de octubre de 2026 arrancando con los vehículos que terminen en 1,2 y 3

Modifique su programa en el cual usted ingrese una fecha cualquiera comprendida entre el día 9 de octubre de 2026 y el 31 de diciembre de 2080 y el programa retorne el número de las placas que les correspondería surtir gasolina subsidiada para ese día. (Recuerde que su programa deberá considerar los años bisiestos donde febrero tiene 29 días: 2028, 2032, 2036, 2040, 2044, 2048, 2052, 2056, 2060, 2064, 2068, 2072, 2076 y 2080).

Indique según su programa que placa corresponde para las fechas que le indicara el profesor cuando el programa esté listo.

Programa


/*  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