Hola.
A ver, toda la "magia" de contar los días transcurridos ocurre en este bucle
TD <- 0 // INICIALIZAR ACUMULADOR DE TOTAL DE DIAS
Para MM <- 1 Hasta M-1 Con Paso 1 Hacer
Segun MM Hacer
1,3,5,7,8,10,12: DD <- 31
4,6,9,11: DD <- 30
De Otro Modo:
DD <- 28
Fin Segun
TD <- TD + DD // ACTUALIZAR ACUMULADOR DE TOTAL DE DIAS
Fin Para
Lo que hace es recorrer los meses
completos que hay desde enero hasta el mes de la fecha introducida y acumular los días que tienes cada uno de esos mes.
Algunos meses pueden tener 31 días, otros pueden tener 30 y luego está Febrero que tiene 28 (29 si es año bisiesto, pero esto no se está teniendo en cuenta para simplificar)
Para esto, se usá el "Según...."
Segun MM Hacer
1,3,5,7,8,10,12: DD <- 31
4,6,9,11: DD <- 30
De Otro Modo: (Febrero)
DD <- 28
Fin Segun
Una vez se han acumulado los días de esos meses
completos, solo queda sumar los días del último mes "no completo", es decir, los días indicados en la fecha que ha introducido el usuario.
Imagina que nos dan la fecha 05/04/2023.
Comenzamos de momento con 0 días acumulados:
diasAcumulados = 0
Bien, el bucle recorre todos los meses
completos hasta el mes indicado, que no estará completo y por tanto no cuenta en el bucle.
Para MM <- 1 Hasta M-1 Con Paso 1 Hacer
Es decir, nos han dado el mes 4, pues el bucle va a recorrer los meses 1,2 y 3
Empezamos por el mes 1(Enero), ¿cuántos días tiene?.
Pues mediante el "Según..." vemos que tiene 31 días
Segun MM Hacer
1,3,5,7,8,10,12: DD <- 31
4,6,9,11: DD <- 30
De Otro Modo: (Febrero)
DD <- 28
Fin Segun
Por tanto, acumulamos 31 días a los 0 días iniciales.
diasAcumulados = 0 + 31 = 31
Pasamos al siguiente mes, el 2, que el "Según..." nos dice que tiene 28 días más para acumular:
diasAcumulados = 31 + 28 = 59
Llegamos al mes 3, que también tiene 31 días acumulables:
diasAcumulados = 59 + 31 = 90
Ok, ya hemos recorrido todos los meses completos, los 1,2 y 3.
El 4 no está completo, pero como la fecha indicada es 05/04/2023, pues sabemos que de este cuarto mes han transcurrido 5 días, así que los acumulamos también
diasAcumulados = 90 + 5 = 95
Y ya tenemos el resultado. Desde el 01/01/2023 hasta el 05/04/2023, han transcurrido
95 días.
Supongamos estas dos fechas
Inicio = 05/03/2023
Fin = 23/06/02023
Hacer lo mismo entre dos fechas indicadas por el usuario, básicamente es el mismo procedimiento.
Solo cambia que ahora el bucle "Para..." no comienza en el mes 1. Ha de comenzar en el mes indicado en la fecha de inicio (se puede llamar
Mi) hasta el mes indicado como fecha final(
Mf)
Para MM <- Mi Hasta Mf-1 Con Paso 1 Hacer
Segun MM Hacer
1,3,5,7,8,10,12: DD <- 31
4,6,9,11: DD <- 30
De Otro Modo:
DD <- 28
Fin Segun
TD <- TD + DD // ACTUALIZAR ACUMULADOR DE TOTAL DE DIAS
Fin Para
Cuando termine el bucle, igual que en el ejercicio de antes, habrá que sumar a los días acumulados los días indicados en la fecha Final.
Pero además, habrá que
RESTAR los días indicados en la fecha de Inicio.
Hemos propuesto como ejemplo esta fecha de inicio: 05/03/2023
En el bucle "Para...", el mes 3 lo hemos contado como si fuera un mes completo y hemos acumulado 31 días para ese mes.
Pero no es correcto, porque la fecha comienza el día 5. Así que esos 5 días habría que restarlos al total acumulado.
Por tanto, al terminar el bucle, al total acumulado hay que sumarle los días de la fecha Final (
Df) y restarle el día indicado en la fecha de Inicio(
Di).
Otra diferencia es que convendría validar que la fecha que te han dado como fecha Inicial, es realmente anterior a la fecha que te dan como Final.
Pero yo antes que eso, me ocuparía de conseguir hacer bien el cálculo entre dos fechas indicados por el usuario.
Y ya luego, si hubiera tiempo, añadir código para validar las fechas indicadas.
Espero que hayas entendido la lógica de estos procesos. Intenta desarrollar el código y comparte por aquí si no te sale, a ver si podemos ayudarte.
Saludos.