martes, 1 de abril de 2025

01.- Programación I - Parcial Nro. 1 - Semestre 2024 - II (Solución del Profesor)

 

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 ________


Programa en C++

/* Programa: Este programa determina cual es la fecha exacta

   en la cual se produce una combinación día y día de semana

   según el nro de veces que especifique el usuario, a partir del

   miércoles 03 de abril de 2024

   

   Elaborado por Carlos Ferrer

   Fecha 4 abril del 2024

   Rev. 0

*/


#include <iostream>

#include <locale.h> //Biblioteca de idiomas

using namespace std;


main() 

{

    //Seteamos el lenguaje en español para que los cout puedan imprimir áéíóú y ñ

    setlocale(LC_ALL, "spanish");

    // Limpiamos Pantalla

    system("cls");


    // Establecemos la fecha de hoy

    int dia = 3;

    int mes = 4;  

    int anio = 2024;

    // establecemos (Lunes 1, Martes 2 ....Domingo 7)

    int dia_s = 3;

    

    // Detector de año bisiesto

    bool Bisiesto;


    string dias_s[7] = {"Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo"};

    string meses [12] = {"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"};

    

    int dia_buscar = 0; // Establecemos dia a buscar

    

    while (dia_buscar < 1 or dia_buscar > 31) {

        cout << "Ingrese día a buscar = ";

        cin >> dia_buscar;

        if (dia_buscar < 1 or dia_buscar > 31) 

{

            system("cls");

            cout << "Alerta día fuera de rango!!"<<endl;

            cout << "Los días deben estar en el rango de 1 a 31"<<endl;         

            cout << endl;  

        }  

    }


    int dia_s_buscar = 0;

    while (dia_s_buscar < 1 or dia_s_buscar > 7) 

{

        cout << "Ingrese día de semana a buscar (Lunes=1 a Dom=7)= ";

        cin >> dia_s_buscar;

        if (dia_s_buscar < 1 or dia_s_buscar > 7) 

        {

            system("cls");

            cout << "Alerta día de semana fuera de rango!!"<<endl;

            cout << "Los días deben estar en el rango de 1 a 7"<<endl;         

            cout << endl;

        }  

    }

        

    int combinacion_a_buscar = 0;

    while (combinacion_a_buscar < 1) {

        cout << "Ingrese la combinación a buscar= ";

        cin >> combinacion_a_buscar;

        if (combinacion_a_buscar < 1) {

            system("cls");

            cout << "Alerta combinación a buscar fuera de rango!!"<<endl;

            cout << "La combinación a buscar debe ser mayor que cero"<<endl;         

            cout << endl;        

        }        

    }


    /* Barremos todas las fechas desde el 03 de Abril de 2024

       Hasta conseguir la combinación buscada*/

    int contador_de_combinaciones = 0;

    while (contador_de_combinaciones < combinacion_a_buscar) 

{

        // Determinamos si el año en movimiento es bisiesto

        if ((anio % 4 == 0 and anio % 100 != 0) or (anio % 4 == 0 and anio % 100 == 0 and anio % 400 == 0))

        {

        Bisiesto=true;

}

else

{

Bisiesto=false;

}

        // Si la fecha es igual a la buscada incrementamos el contador

        if (dia == dia_buscar and dia_s == dia_s_buscar) 

{

            contador_de_combinaciones=contador_de_combinaciones+1;

        }

        

        if(contador_de_combinaciones == combinacion_a_buscar)

{

break;

}

 

        dia=dia+1;

        dia_s=dia_s+1;

        

        // Verificamos un cambio de mes

        if ((dia == 31 and (mes == 11 or mes == 6 or mes == 4 or mes == 9)) or 

            (dia == 29 and mes == 2 and Bisiesto==false) or 

            (dia == 30 and mes == 2 and Bisiesto==true) or

            (dia == 32)) 

{

            dia = 1;

            mes = mes+1;

        }

        

        // Verificamos un cambio de año

        if (mes == 13) 

{

            mes = 1;    

            anio=anio+1;

        }

        

        // Verificamos el reseteo del ciclo de la semana

        if (dia_s == 8) 

{

            dia_s = 1;

        }

    }


    // Imprimimos el resultado

    cout << endl;                           

    cout << "La Combinación nro. " << contador_de_combinaciones << " de " << dias_s[dia_s - 1] << " " << dia << " ocurrira:"<<endl;

    cout << "El " << dia << " del mes de " << meses[mes - 1] << " del año " << anio << endl;

    cout << endl;  

    system("pause");

    

}



Programa Python


# Programa: Este programa determina cual es la fecha exacta
# en la cual se produce una combinación día y día de semana
# según el nro de veces que especifique el usuario, a partir del
# miércoles 03 de abril de 2024
#
# Elaborado por Carlos Ferrer
# Fecha 4 abril del 2024
# Rev. 0


# Limpiamos Pantalla
import os as o
o.system("cls")

# Establecemos la fecha de hoy

                     
dia=3
mes=4  
año=2024

# establecemos (Lunes 1, Martes 2 ....Domingo 7)
dia_s=3

aux2=["Lunes", "Martes", "Miercoles","Jueves","Viernes","Sabado","Domingo"]
aux3=["Enero", "Febrero", "Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"]
dia_a_buscar=0
while dia_a_buscar<1 or dia_a_buscar>31:
    dia_a_buscar=int(input("Ingrese día a buscar = "))
    if dia_a_buscar<1 or dia_a_buscar>31:
        o.system("cls")
        print ("Alerta día fuera de rango!!")
        print ("Los días deben estar en el rango de 1 a 31")        
        print()  

dia_s_buscar=0
while dia_s_buscar<1 or dia_s_buscar>7:
    dia_s_buscar=int(input("Ingrese día de semana a buscar (Lunes=1 a Dom=7)= "))
    if dia_s_buscar<1 or dia_s_buscar>7:
        o.system("cls")
        print ("Alerta día de semana fuera de rango!!")
        print ("Los días deben estar en el rango de 1 a 7")        
        print()
       
combinacion_a_buscar=0
while combinacion_a_buscar<1:
    combinacion_a_buscar=int(input("Ingrese la combinación a buscar= "))
    if combinacion_a_buscar<1:
        o.system("cls")
        print ("Alerta combinación a buscar fuera de rango!!")
        print ("La combinación a buscar debe ser mayor que cero")        
        print()        

# Barremos todas las fechas desde el 03 de Abril de 2024
# Hasta conseguir la combinación buscada
combinacion=0
while combinacion<combinacion_a_buscar:
   
    # Determinamos si el año en movimiento es bisiesto

    if((año%4==0 and año%100!=0)or(año%4==0 and año%100==0 and año%400==0)):
        Bisiesto=True
    else:
        Bisiesto=False    
   
    # Si la fecha es igual a la buscada incrementamos el contador

    if (dia==dia_a_buscar and dia_s==dia_s_buscar):
        combinacion=combinacion + 1
       
    dia=dia+1
    dia_s=dia_s+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
    elif(dia==29 and mes==2 and Bisiesto==False):
        dia=1
        mes=mes+1  
    elif(dia==30 and mes==2 and Bisiesto==True):
        dia=1
        mes=mes+1  
    elif(dia==32):
        dia=1
        mes=mes+1
   
    # Verificamos un cambio de año

    if (mes==13):
        mes=1    
        año=año+1
   
    # Verificamos el reseteo del ciclo de la semana
 
    if(dia_s==8):
        dia_s=1

dia=dia-1

# Imprimimos el resultado
print()                          
print ("La Combinación nro.",combinacion,"de", aux2[dia_s-1],dia,"ocurrira:")
print ("El",dia,"del mes de",aux3[mes-1],"del año",año)
print()

Resultados









EXITO!!!

No hay comentarios.:

Publicar un comentario