jueves, 27 de marzo de 2025

01.- Programación I - Actividad Propuesta 21/03/2025 - Solución del Profesor

 En Venezuela el gobierno venezolano implemento la venta de gasolina subsidiada por numero de finalización de placa, veamos el calendario de Marzo de 2025:





Intente elaborar un programa en el cual usted ingrese una fecha cualquiera comprendida entre el día de hoy 21 de marzo de 2025 y el 31 de diciembre de 2080 y programa retorne el numero 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)


Resultado esperado



La solución de este ejercicio se publicará el Lunes 24 de Marzo de 2025.


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 21 de marzo de 2024 a 31 de dic de 2080)

    Elaborado por Carlos Ferrer

    Rev: 25 mar del 2025

*/


#include <iostream>

using namespace std;


main() 

{


// 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 21 de marzo de 2025 y las placas=4

    (1= 1 y 2   2= 3 y 4    3= 5 y 6   4= 7 y 8    5= 9 y 8)

*/

int dia = 21;

int mes = 3;

int a = 2025;

int placas = 4;

    

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 < 2024 or a_b > 2070) 

{

    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 == 6) 

{

            placas = 1;

        }

    }


// Imprimimos el resultado

    

if (placas == 1) 

{

aux = "1 y 2";

}


if (placas == 2) 

{

aux = "3 y 4";

}


if (placas == 3) 

{

aux = "5 y 6";

}


if (placas == 4) 

{

aux = "7 y 8";

}   

if (placas == 5) 

{

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;

}





No hay comentarios.:

Publicar un comentario