jueves, 22 de octubre de 2026

02a.- Programación I - Manejo de Cadena de caracteres - Programa Clase del 22 de Octubre 2026 + Programa Solicitado (Elaborado por el Profesor)

/*Programa tutorial inicial para el manejo de las variables tipo cadena de caracteres

autor: Carlos Ferrer

Rev. 1


Nota: Como es un programa Tutorial el mismo se va explicando


*/


#include <iostream>


#include <locale.h> //LIBRERIA PARA TRABAJAR CON LOS CARACTERES ACENTUADOS Y LA LETRA Ñ

using namespace std;


main()

{

char a;

int i,j;

setlocale(LC_ALL, "spanish"); //SETEAR EL LEGUAGE EN ESPAÑOL

cout <<"Programa elaborado por el Prof. Carlos Ferrer"<<endl;

cout <<"Rev Cs - abr 2025 "<<endl;

cout <<"Manejo de Variables Char (Caracter) y String (Cadena de Caracteres)"<<endl<<endl;

system ("pause");

system("cls");

cout <<"************************** (1) *****************************"<<endl<<endl;

cout <<"Las variables tipo Char se caracterizan por que almacenan"<<endl;

cout <<"un carácter alfanumérico o símbolo especial."<<endl<<endl;

cout <<"Las variables tipo Char se declaran de la siguiente forma"<<endl;

cout <<"char var1"<<endl<<endl;

cout <<"Se le puede asignar un valor directo usando var1='A', el dato"<<endl;

cout <<"debe ser colocado dentro de comillas simples"<<endl<<endl;

cout <<endl<<"por ejemplo"<<endl<<endl<<"caracter='a';"<<endl;

cout <<"caracter='1';"<<endl;

cout <<"caracter='*';"<<endl<<endl;

system ("pause");

system("cls");

cout <<"************************** (2) *****************************"<<endl<<endl;

cout <<"Si a Las variables tipo Char se le asigna un valor numérico (Sin comillas simples)"<<endl;

cout <<"la variable tomará el carácter de la tabla ascii de tu computadora"<<endl;

cout <<"correspondiente a esa posición"<<endl<<endl;

cout <<"Por ejemplo variable=78"<<endl;

cout <<"Para este caso el valor almacenado corresponde a la letra N en mayúscula"<<endl<<endl;

cout <<"este carácter ocupa la posición 78 en la tabla ascii de tu computador"<<endl<<endl;

cout <<""<<endl<<endl;

system ("pause");

system("cls");

cout <<"************************** (3) *****************************"<<endl<<endl;

cout <<"Procedamos a imprimir los caracteres de la tabla ascii ubicados "<<endl;

cout <<"en el rango desde el Nro.= 30 hasta el 199 "<<endl<<endl;

system ("pause");

for (i=30;i<=199;i=i+1)

    {

    a=i;

    cout <<i<<"="<<a<<" ";

    if(j==10)

        {

j=0;

cout <<endl;

} 

    j=j+1;

   }

cout <<endl<<"Nota: Observe como las letras mayúsculas y minúsculas "<<endl;

cout <<"estan separadas por 32 posiciones (80=P y 112=p) "<<endl<<endl;

system ("pause");

system("cls");

cout <<"************************** (4) *****************************"<<endl<<endl;

cout <<endl<<"Si usted intenta meter en una variable CHAR más de un carácter"<<endl;

cout <<"el carácter almacenado será el último de la cadena "<<endl;

cout <<"por ejemplo caracter1='Carlos' el valor almacenado será"<<endl;

cout <<"el carácter 's'"<<endl<<endl;

cout <<"Sin embargo el compilador te dará una advertencia (warning) "<<endl;

cout <<"indicando que la variable tiene overflow "<<endl;

cout <<"Recuerde que esto no impide que el programa compile "<<endl<<endl;

system ("pause");

system("cls");

cout <<"************************** (5) *****************************"<<endl<<endl;

cout <<endl<<"Si a una variable tipo char (sin comillas) se le aplica una operación"<<endl;

cout <<"matemática de suma o resta, básicamente lo que hacemos es "<<endl;

cout <<"cambiar de posición de la tabla ascci"<<endl;

cout <<"Por ejemplo  "<<endl<<endl;

cout <<"Char var2= 'B'"<<endl;

cout <<"var2= var2+32"<<endl<<endl;

cout <<"Después de esa operación matemática la variable presentará"<<endl;

cout <<"el siguiente valor var2='b'"<<endl<<endl;

system ("pause");

system("cls");

cout <<"************************** (6) *****************************"<<endl<<endl;

cout <<"Las variables tipo string se caracterizan por que almacenan"<<endl;

cout <<"varios caracteres alfanumérico o símbolo especiales, incluyendo espacios en blanco"<<endl<<endl;

cout <<"Las variables tipo string se declaran de la siguiente forma"<<endl;

cout <<"string var2;"<<endl<<endl;

a=34;

cout <<"Se le puede asignar un valor directo de la siguiente manera: var2="<<a<<"Caracas"<<a<<"; el dato"<<endl;

cout <<"debe ser colocado dentro de comillas dobles"<<endl<<endl;

system ("pause");

system ("cls");

cout <<"************************** (7) *****************************"<<endl<<endl;

cout <<"Una variable string se recomienda sea declarada dentro del "<<endl;

cout <<"programa principal Main o dentro de las funciones."<<endl<<endl;

cout <<"No es recomendable declararla como una variable Global."<<endl<<endl;

cout <<"(Afuera del Main y de las funciones)"<<endl<<endl;

system ("pause");

system ("cls");

 cout <<"************************** (8) *****************************"<<endl<<endl;

cout <<"El compilador de Dev C++ entiende a una variable string"<<endl;

cout <<"como un arreglo tipo Char[n] donde n será la cantidad"<<endl;

cout <<"de letras del string menos 1, dado que la primera posición"<<endl;

cout <<"se entiende como la posición 0."<<endl<<endl;

cout <<"Veamos un ejemplo:"<<endl;

cout <<"string cadena1"<<endl;

cout <<"cadena1"<<a<<"Carlos"<<a<<endl<<endl;

cout <<"cadena1[0]='C'"<<endl;

cout <<"cadena1[1]='a'"<<endl;

cout <<"cadena1[2]='r'"<<endl;

cout <<"cadena1[3]='l'"<<endl;

cout <<"cadena1[4]='o'"<<endl;

cout <<"cadena1[5]='s'"<<endl<<endl;

system ("pause");

system ("cls");

cout <<"************************** (9) *****************************"<<endl<<endl;

cout <<"Dos variables tipo string se pueden concatenar en otra variable"<<endl;

cout <<"usando el operador (+)"<<endl;

cout <<"veamos el ejemplo:"<<endl<<endl;

cout <<"string var1,var2,var3;"<<endl;

cout <<"var1="<<a<<"Carlos"<<a<<endl;

cout <<"var2="<<a<<"Ferrer"<<a<<endl;

cout <<"var3="<<"var1 +"<<a<<" "<<a<<"+ var2;"<<endl;

cout <<"El valor final de Var3 corresponderá"<<endl;

cout <<"Var3= "<<a<<"Carlos Ferrer"<<a<<endl<<endl;

system ("pause");

system ("cls");

cout <<"************************** (10) *****************************"<<endl<<endl;

cout <<"Si usted intenta leer una variable string"<<endl;

cout <<"desde la consola usando la instrucción cin"<<endl;

cout <<"el dato se almacenara hasta el primer espacio en blanco"<<endl<<endl;

cout <<"Por ejemplo:"<<endl<<endl;

a='"';

cout <<"string var2;"<<endl;

cout <<"cout <<"<<a<<"ingrese nombre y apellido"<<a<<"<<endl;"<<endl;

cout <<"cin >>var2;"<<endl<<endl;

cout <<"Si el usuario ingresa "<<a<<"Pedro Guerra"<<a<<endl;

cout <<"El único dato que se almacenará en la variable var2 será= "<<a<<"Pedro"<<a<<endl<<endl;

system ("pause");

system ("cls");

cout <<"************************** (10) Continuación *****************************"<<endl<<endl;

cout <<"Para poder almacenar la cadena de caracteres completa"<<endl;

cout <<"usted debe usar una una instrucción de la biblioteca "<<a<<"iostream"<<a<<endl;

cout <<"que permite leer líneas completa: getline()"<<endl;

cout <<"dentro de los paréntesis usted indicará que ejecutará la función"<<endl;

cout <<"Console input y la variable que recibirá el dato: getline(cin,var2);"<<endl;

cout <<"modifiquemos el código de la forma correcta"<<endl<<endl;

cout <<"string var2;"<<endl;

cout <<"cout <<"<<a<<"ingrese nombre y apellido"<<a<<"<<endl;"<<endl;

cout <<"cin.ignore(); /*Se se utiliza para ignorar lo que hay en el buffer o un dato anterior"<<endl;   

cout <<"                Normalmente el primer getline no requiere el comando ignorar*/"<<endl; 

cout <<"getline(cin,var2);"<<endl<<endl;

cout <<"Si el usuario ingresa "<<a<<"Pedro Guerra"<<a<<endl;

cout <<"El dato que se almacenará en la variable var2 será= "<<a<<"Pedro Guerra"<<a<<endl;

cout <<"(Incluyendo el espacio en blanco como un carácter)"<<a<<endl<<endl;

system ("pause");

system ("cls");

cout <<"************************** (11)  *****************************"<<endl<<endl;

cout <<"Nosotros podemos extraer una cadena de caracteres a partir de otra"<<endl;

cout <<"cadena de caracteres usando el parámetro "<<a<<"substr()"<<a<<endl;

cout <<"este parámetro actúa sobre el dato a extraer"<<endl;

cout <<"dentro de los paréntesis se indica en principio la posición del carácter"<<endl;

cout <<"a partir del cual se ejecutará la extracción, veamos un ejemplo:"<<endl<<endl;

cout <<"string var1,var2;"<<endl;

cout <<"var1="<<a<<"123456 89ABCD"<<a<<";"<<endl;

cout <<"var2=var1.substr(4);"<<endl<<endl;

cout <<"En var2 se guardará ="<<endl;

cout <<a<<"56 89ABCD"<<a<<endl<<endl;

cout <<"Recuerde que las cadenas de caracteres arrancan"<<endl;

cout <<"en la posición Cero (0), por eso el carácter de la posición 4 es el cinco (5)"<<endl<<endl;

system ("pause");

system ("cls");

cout <<"************************** (11) Continuación *****************************"<<endl<<endl;

cout <<"Al parámetro substr se le puede agregar en los paréntesis "<<endl;

cout <<"un segundo elemento que correspondería a la cantidad de"<<endl;

cout <<"caracteres que vas a extraer"<<endl<<endl;

cout <<"veamos un ejemplo:"<<endl<<endl;

cout <<"string var1,var2;"<<endl;

cout <<"var1="<<a<<"Profesión= Ingeniero Industrial"<<a<<";"<<endl;

cout <<"var2=var1.substr(11,9);"<<endl<<endl;

cout <<"En var2 se guardará ="<<endl;

cout <<a<<"Ingeniero"<<a<<endl<<endl;

cout <<"nota: recuerde la posición de la frase arranca en (0) cero"<<endl;

system ("pause");

system ("cls");

cout <<"************************** (12)  *****************************"<<endl<<endl;

cout <<"El parámetro "<<a<<"size()"<<a<<" retorna la cantidad de caracteres"<<endl;

cout <<"de una cadena de caracteres"<<endl;

cout <<"veamos un ejemplo:"<<endl<<endl;

cout <<"string var1;"<<endl;

cout <<"int cantidad;"<<endl;

cout <<"var1="<<a<<"Esto es una Prueba"<<a<<";"<<endl;

cout <<"cantidad=var1.size();"<<endl<<endl;

cout <<"En cantidad se guardará = 18"<<endl<<endl;

cout <<"Recuerde que las cadenas de caracteres arrancan"<<endl;

cout <<"en la posición Cero (0), como esta cadena tiene 18 caracteres"<<endl;

cout <<"terminará en la posición diecisiete (17)"<<endl<<endl;

system ("pause");

system ("cls");

cout <<"************************** (13)  *****************************"<<endl<<endl;

cout <<"El parámetro "<<a<<"find()"<<a<<" retorna la posición en la que aparece"<<endl;

cout <<"una cadena de caracteres dentro de otra"<<endl;

cout <<"veamos un ejemplo:"<<endl<<endl;

cout <<"string var1;"<<endl;

cout <<"int Pos;"<<endl;

cout <<"var1="<<a<<"Esto es una Prueba"<<a<<";"<<endl;

cout <<"Pos=var1.find("<<a<<"Pru"<<a<<");"<<endl<<endl;

cout <<"En Pos se guardará = 12"<<endl<<endl;

cout <<"Este valor corresponde a la posición donde comienza la cadena"<<endl;

cout <<"de caracteres "<<a<<"Pru"<<a<<" dentro de var1"<<endl<<endl;

system ("pause");

system("cls");

cout <<"************************** (13)  Continuación *****************************"<<endl<<endl;

cout <<"veamos otro ejemplo:"<<endl<<endl;

cout <<"string var1,var2;"<<endl;

cout <<"int Pos;"<<endl;

cout <<"var1="<<a<<"Esto es una Prueba"<<a<<";"<<endl;

cout <<"var2="<<a<<" e"<<a<<";"<<endl;

cout <<"Pos=var1.find(var2);"<<endl<<endl;

cout <<"En Pos se guardará = 5"<<endl<<endl;

cout <<"Este valor corresponde a la posición donde comienza la cadena"<<endl;

cout <<"de caracteres "<<a<<" e"<<a<<" dentro de var1"<<endl<<endl;

cout <<"Recuerde los espacios en blanco son caracteres existentes"<<endl<<endl;

system ("pause");

system ("cls");

cout <<"************************** (13) Continuación *****************************"<<endl<<endl;

cout <<"El parámetro find() tambien puede retornar la posición en la que aparece"<<endl;

cout <<"una cadena de caracteres a partir de una posición específica"<<endl;

cout <<"veamos un ejemplo:"<<endl<<endl;

cout <<"string var1;"<<endl;

cout <<"int Pos;"<<endl;

cout <<"var1="<<a<<"Esto es una Prueba especial"<<a<<";"<<endl;

cout <<"Pos=var1.find("<<a<<"es"<<a<<";10);"<<endl<<endl;

cout <<"En Pos se guardará = 19"<<endl<<endl;

cout <<"Este valor corresponde a la posición donde comienza la cadena"<<endl;

cout <<"de caracteres "<<a<<"es"<<a<<" dentro de var1 después de la decima posición"<<endl<<endl;

cout <<"Nota: Observen como la primera cadena "<<a<<"es"<<a<<" se ignora porque esta antes de la posición 10"<<endl<<endl;

system ("pause");

system("cls");

cout <<"************************** (14)  Actividad del estudiante *****************************"<<endl<<endl;

cout <<"Elabore un programa que permita capturar desde la consola"<<endl;

cout <<"una cadena de caracteres de 5 palabras en una variable string."<<endl<<endl;

cout <<"Este programa debera sustituir todas las vocales de las 5 palabras por asteriscos y después"<<endl;

cout <<"invertir el sentido de cada palabra"<<endl<<endl;

cout <<"Por ejemplo:"<<endl<<endl;

cout <<"Ingrese frase de tres palabras = La Florencia Caracas"<<endl<<endl;

cout <<"Resultado = *L **cn*r*lF s*c*r*C"<<endl<<endl;

cout <<"ÉXITO!!!!"<<endl<<endl;

system ("pause");

system ("cls");

}


Programa Solicitado al final del programa tutorial


/*Programa solicitado en tutorial inicial para el manejo de las variables 

tipo cadena de caracteres

autor: Carlos Ferrer

Rev. Octubre de 2025


*/


#include <iostream>

#include <locale.h> //LIBRERIA PARA TRABAJAR CON LOS CARACTERES ACENTUADOS Y LA LETRA Ñ


using namespace std;


main()

{

string frase;

char aux;

int i, j, posicion, cantidad,cant_palabras,inicio;

string palabras[15];

cout <<"Ingrese Frase de 5 palabras como mínimo = ";

getline (cin,frase);




//contamos las palabras

for (i=0;i<frase.size();i=i+1)

{

if (frase[i]==' ')

{

cant_palabras=cant_palabras+1;

}

}

//Extraemos las palabras de la frase original

i=1;

posicion=0;

inicio=posicion;

cantidad=0;

while (posicion<=frase.size())

{

if (frase[posicion]==' ' or posicion==frase.size())

{

palabras[i]=frase.substr(inicio,cantidad);

posicion=posicion+1;

inicio=posicion;

cantidad=0;

i=i+1;

}

else

{

posicion=posicion+1;

cantidad=cantidad+1;

}

}


//Volteamos cada palabra


for (j=1;j<=i;j=j+1)

{

for (posicion=0;posicion<palabras[j].size()/2;posicion=posicion+1)

{

aux=palabras[j][posicion];

palabras[j][posicion]=palabras[j][palabras[j].size()-1-posicion];

palabras[j][palabras[j].size()-1-posicion]=aux;

}

}


//Concatenamos las nuevas palabras


frase=palabras[1];

j=2;

while (palabras[j].size()>0)

{

frase=frase+" "+palabras[j];

j=j+1;

}


//Reemplazamos las vocales por asterisco


for (i=0;i<frase.size();i=i+1)

{

if (frase[i]=='a' or frase[i]=='e' or frase[i]=='i' or frase[i]=='o' or frase[i]=='u')

{

frase[i]='*';

}

if (frase[i]=='A' or frase[i]=='E' or frase[i]=='I' or frase[i]=='O' or frase[i]=='U')

{

frase[i]='*';

}

if (frase[i]=='á' or frase[i]=='é' or frase[i]=='í' or frase[i]=='ó' or frase[i]=='ú')

{

frase[i]='*';

}

if (frase[i]=='Á' or frase[i]=='É' or frase[i]=='Í' or frase[i]=='Ó' or frase[i]=='Ú')

{

frase[i]='*';

}

}

//Presentamos la solución


cout <<"Frase con las palabras invertidas y las vocales sustituidas por * ="<<endl<<endl;

cout <<frase<<endl<<endl;


system("pause");

}

viernes, 9 de octubre de 2026

01m.- Programación I - Parcial Nro. 1 - CALIFICACIONES

 


01l.- Programación I - Parcial Nro. 1 (2027 - I) - Modelo B (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 y 2

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

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

4to día carros cuyas placas terminen en 8, 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 y 2

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 B)

*/

#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 y 2   2= 3, 4 y 5    3= 6 y 7   4= 8, 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 y 2";
}

if (placas == 2) 
{
aux = "3, 4 y 5";
}

if (placas == 3) 
{
aux = "6 y 7";
}

if (placas == 4) 
{
aux = "8, 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;

}




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;

}



martes, 6 de octubre de 2026

01j.- Programación I - Actividad Propuesta para el a parcial Nro. 1

 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:





Elabore un programa en el cual usted ingrese una fecha cualquiera comprendida entre el día 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



Usted deberá traer para mañana su programa para el parcial en un Pen Drive. El profesor los hará pasar al laboratorio y les solicitará una modificación sencilla del programa. La implementación de esta modificación será la nota del parcial. 

Éxito