lunes, 31 de marzo de 2025

01.- Programación I - Parcial Nro. 1 - Semestre 2024 - II

 

La Resurrección de Freddy Krueger 




Freddy Krueger quiere conocer, para su resurrección, cuál es la fecha exacta a partir de hoy (miércoles 03 de abril de 2024) cuándo se produce por décima tercera vez (13ra) la combinación: martes 13.

Elabore un programa que ayude a Freddy.

Indique según los resultados del programa en qué fecha a partir de hoy se produce:


a.- La décima tercera (13ra) vez que se combina día martes 13.

Resultado:

Dia 13 del mes  _________ del año ________

 

b.- La vigésima novena (29na) vez que se combina día viernes 20.

Resultado:

Dia 13 del mes  _________ del año ________

 

c.- La sexagésima (60ma) vez que se combina sábado 21.

Resultado:

Dia 21 del mes  _________ del año ________


La solución se publicara mañana a la 1 pm.


01.- Programación I - Calificaciones Acumuladas

 


01.- Programación I - Operadores

Operadores Aritméticos

Un operador aritmético toma dos operandos como entrada, realiza un cálculo y devuelve el resultado.


Nota: Para obtener el resultado en tipo flotante, uno de los operandos también debe ser de tipo flotante.

Operadores Relacionales

Un operador relacional se emplea para comparar y establecer la relación entre ellos. Devuelve un valor booleano (true o false) basado en la condición.



Operadores Lógicos

Se utiliza un operador lógico para tomar una decisión basada en múltiples condiciones lógicas.


NOTA1: Existen mas operadores, los mismos los estaremos explicando en la medida que se vaya requiriendo su uso.

NOTA2: Existen otras operaciones como: Raíz cuadrada, Seno, Coseno, etc. están incorporadas como métodos de módulos externos, los mismos los estaremos explicando en la medida que se vaya requiriendo su uso.







jueves, 27 de marzo de 2025

01.- Programación I - Prueba Corta 27 de marzo de 2025 - Solución del Profesor

Ejercicio: Elabore un programa que presente en pantalla los primeros veinte (20) números que:

a.- Que sean divisibles exactamente entre cuatro (4). (Sin parte decimal)

b.- Que sean divisibles exactamente entre seis (6). (Sin parte decimal)

c.- Que su raíz cuadrada de un numero entero (Sin parte decimal) y que ese número termine es cuatro (4).

El rango a revisar es desde 5.000.000 hasta que consiga los primeros cinco (5) números.

En la pantalla deberá presentarse los número.


Solución 

Una forma de hacer el ejercicio es ejecutar las verificaciones en el orden que establece el enunciado, funciona pero no es el programa mas eficiente.


Programa Nro.1

/* Programa para determinar los primeros 5

números a partir de 5 millones que son divisibles

exactamente entre 4 y 6, que la raíz da un resultado sin

parte decimal y que ese resultado termina en 4.


Elaborado: Por Carlos Ferrer

Rev. marzo 2025

*/


#include <iostream>

#include <math.h>

using namespace std;


main()

{

int numero=5000000; //Números del 5000000 en adelante

double raiz; //raíz cuadrada del numero a estudiar

int i=0; //Contador de números

int aux_entero; //Variable auxiliar entera

double aux_doble; //Variable auxiliar doble


cout <<"Numero  Divi/4  Div/6  Raiz"<<endl;


//Revisamos hasta conseguir 5 números

while (i<=5) 

{

//verificamos si es divisible entre 4 y 6

if(numero%4==0 and numero%6==0)

{

//Verificamos si la raíz es exacta

raiz=sqrt(numero);

aux_entero=raiz;

aux_doble=raiz;

aux_doble=aux_doble-aux_entero;

if (aux_doble==0)

{

//Verificamos si la raiz termina en 4

aux_entero=raiz/10;

aux_doble=raiz/10;

aux_doble=aux_doble-aux_entero;

if (aux_doble>0.39 and aux_doble<0.41)

{

cout <<numero<<" "<<numero/4<<" "<<numero/6<<" "<<raiz<<endl;

i=i+1;

}

}

}

numero=numero+1;

}

}


Otra forma de hacer el ejercicio es arrancar desde la raíz, sabemos que la raiz de 5.000.000 es 2.236,067977, la idea es buscar todos los números a partir de 2236 que terminen en 4 arrancando en 2244, se eleva al cuadrado y luego simplemente verificamos si es divisible entre 4 y 6. Al conseguir los primeros 5 finalizamos la búsqueda, aparentemente esta es la forma mas simple.

Programa Nro. 2

/* 2do Programa para determinar los primeros 5

números a partir de 5 millones que son divisibles

exactamente entre 4 y 6, que la raiz da un resultado sin

parte decimal y que ese resultado termina en 4.


Elaborado: Por Carlos Ferrer

Rev. marzo 2025

*/


#include <iostream>

#include <math.h>

using namespace std;


main()

{

int numero; //Números del 5000000 en adelante

double raiz=2244; //raíz cuadrada del numero a estudiar

int i=0; //Contador de números

int aux_entero; //Variable auxiliar entera


cout <<"Numero  Divi/4  Div/6  Raiz"<<endl;


//Revisamos hasta conseguir 5 números

while (i<=5) 

{

numero=pow(raiz,2);

if (numero%4==0 and numero%6==0)

{

cout <<numero<<" "<<numero/4<<" "<<numero/6<<" "<<raiz<<endl;

i=i+1;

}

raiz=raiz+10;

}

}


Ambos programas arrojan el siguiente resultado:




01.- Programación I - Ejercicios Propuestos

Ejercicio Nro. 1: Elabore un programa que presente en pantalla los primeros veinte (20) números que al sacarle la raíz cuadrada el resultado sea un numero:

a.- Entero (sin parte decimal)

b.- Primo

c.- Que termine siete (7).

El rango a revisar es desde 100000 hasta que ubique los veinte (20) números

En la pantalla deberá presentarse el número y su raíz:

Numero – Raíz cuadrada (Primo que termina en siete)

54621 - 337

120409 – 347



Ejercicio Nro. 2: Elabore un programa que presente en pantalla los primeros veinte 20 números que:

a.- Que finalicen en uno (1).

b.- Que sean divisibles exactamente entre veintiuno (21).

c.- Que el resultado de su división entre veintiuno (21) al sacarle la raíz cuadrada de un numero entero que termine en uno (1).

El rango a revisar es desde 50000 hasta que consiga los veinte (20) números.

En la pantalla deberá presentarse el número, su división entre veintiuno (21) y la raíz cuadrada de ese resultado que termina en uno (1):

Numero terminado en uno – División entre 21 – Raíz Cuadrada que termina en uno

54621 – 2601 - 51



Ejercicio Nro. 3: Elabore un programa que presente en pantalla los primeros veinte (20) números que:

a.- Que sean divisibles exactamente entre cuatro (4). (Sin parte decimal)

b.- Que sean divisibles exactamente entre seis (6). (Sin parte decimal)

c.- Que su raíz cuadrada de un numero entero (Sin parte decimal) y que ese número termine es cuatro (4).

El rango a revisar es desde 50000 hasta que consiga los veinte (20) números.

En la pantalla deberá presentarse el número, su división entre cuatro (4), su división entre seis (6) y la raíz cuadrada de ese resultado que termina en 4:

Numero – División entre 4 – División entre 6 - Raíz Cuadrada terminada en 4

54756 – 13689 – 9126 - 234



Ejercicio Nro. 4Elabore un programa que presente en pantalla los primeros diez (10) números que:

a.- Que sean divisibles exactamente entre catorce (14).

b.- Que el resultado de su división entre catorce (14) al sacarle la raíz cuadrada de un numero entero (sin parte decimal).

c.- Que el resultado de la raíz sea un numero primo (Divisible de forma exacta solamente entre el mismo y entre 1) que termine en tres (3).

El rango a revisar es desde 500000 hasta que consiga los diez (10) números.

En la pantalla deberá presentarse el número, su división entre catorce (14) y la raíz cuadrada de ese resultado:

Numero – División entre 14 – Raíz Cuadrada y numero Primo

521486 – 37249 - 193



Ejercicio Nro. 5: Elabore un programa que presente en pantalla los primeros veinte (20) números que:

a.- Que finalicen en ocho (8).

b.- Que sean divisibles exactamente entre siete (7). (sin parte decimal)

c.- Que el resultado de su división entre siete (7) al sacarle la raíz cuadrada de un numero entero que termine en dos (2).

El rango a revisar es desde 500000 hasta que consiga los veinte números.

En la pantalla deberá presentarse el número, su división entre siete (7) y la raíz cuadrada de ese resultado que termina en (2) dos:

Numero – División entre 7 – Raíz Cuadrada terminada en dos

681408 – 97344 - 312



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;

}





viernes, 21 de marzo de 2025

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

 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.

01.- Programación I - Ejemplos de Ciclos

Para explicar los arreglos y los ciclos elaboramos tres (3) programas de ordenamiento usando el método de la burbuja.


1.- Hacemos el programa usando únicamente ciclo FOR y ARREGLOS 


/* Este programa ordena 10 elementos ubicados en las posiciones desde la 1 a la 10 de un arreglo de 11 posiciones, aplicando el método de la burbuja usando básicamente ciclos FOR

 

Elaborado por Carlos Ferrer - 27 de septiembre de 2024*/

 

 #include <iostream>

double num [11]={0};

double aux;

int i,z;

using namespace std;

 

main()

{

    i=1;      

    do 

        {

        cout <<"Ingrese num["<<i<<"]= "<<endl;

        cin >>num[i];

        i=i+1;

        }

        while (i<=10); 

    for (z=1;z<=10;z=z+1)   // Cantidad de veces que se repite el método

         {

                   for(i=1;i<=9;i=i+1) // 9 comparaciones para 10 elementos, en caso de de requerir se intercambian

                   {

                   if (num[i]>num[i+1])

                            {

                            aux=num[i];

                            num[i]=num[i+1];

                            num[i+1]=aux;

                            }       

            

                   }

         }

 

 

//imprimimos resultados

         cout <<num[1];

         for (i=2;i<=10;i=i+1)

         {

         cout <<" < "<<num[i];

         }

        

         cout <<endl<<endl;

         system("pause");

}

2.- Hacemos el programa usando únicamente ciclo WHILE y ARREGLOS 


/* Este programa ordena 10 elementos ubicados en las posiciones desde la 1 a la 10 de un arreglo de 11 posiciones, aplicando el método de la burbuja usando básicamente ciclos WHILE

 

Elaborado por Carlos Ferrer - 27 de septiembre de 2024*/

 

 #include <iostream>

double num [11]={0};

double aux;

int i,z;

using namespace std;

 

main()

{

    i=1;      

    while (i<=10);  

        {

        cout <<"Ingrese num["<<i<<"]= "<<endl;

        cin >>num[i];

        i=i+1;

        }

 

         z=1;

          while (z<=10)   // Cantidad de veces que se repite el método

         {

                     i=1;

                     while(i<=9) // 9 comparaciones para 10 elementos, en caso de de requerir se intercambian

                   {

                   if (num[i]>num[i+1])

                            {

                            aux=num[i];

                            num[i]=num[i+1];

                            num[i+1]=aux;

                            }       

                     i=i+1;

                   }

          z=z+1;

         }

 

 

//imprimimos resultados

         cout <<num[1];

        i=2; 

        while (i<=10)

         {

         cout <<" < "<<num[i];

         i=i+1;

        }

        

         cout <<endl<<endl;

         system("pause");

}


3.- Hacemos el programa usando únicamente ciclo IF GOTO y ARREGLOS 


/* Este programa ordena 10 elementos ubicados en las posiciones desde la 1 a la 10 de un arreglo de 11 posiciones, aplicando el método de la burbuja usando básicamente ciclos IF GOTO

Elaborado por Carlos Ferrer - 27 de septiembre de 2024*/


 #include <iostream>

double num [11]={0};

double aux;

int i,z;

using namespace std;


main()

{

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

        {

        cout <<"Ingrese num["<<i<<"]= "<<endl;

        cin >>num[i];

        }       

         z=1;

          Repetir1:

          if (z<=10)   // Cantidad de veces que se repite el método

         {

                     i=1;

                     Repetir2:

                     if(i<=9) // 9 comparaciones para 10 elementos, en caso de de requerir se intercambian

                   {

                   if (num[i]>num[i+1])

                            {

                            aux=num[i];

                            num[i]=num[i+1];

                            num[i+1]=aux;

                            }       


                     i=i+1;

                     goto Repetir2;

                   }

          z=z+1;

          goto Repetir1;

         }


//imprimimos resultados

         cout <<num[1];

        i=2; 

        Repetir3:

        if (i<=10)

         {

         cout <<" < "<<num[i];

         i=i+1;

         goto Repetir3;

        }

         cout <<endl<<endl;

         system("pause");

}