Menu

Diseñar un algoritmo que lea la fecha de nacimiento de una persona la fecha actual y en base a estos datos calcule la edad real de la persona expresada en cuantos años tiene con cuantos meses y días, ademas de calcular la cantidad de días vividos, horas vividas y minutos vividos.

Anonymous
2019-11-02
2024-01-06
  • Anonymous

    Anonymous - 2019-11-02
     
  • Anonymous

    Anonymous - 2019-11-02

    me podrian ayudar con es algoritmo :Diseñar un algoritmo que lea la fecha de nacimiento de una persona la fecha actual y en base a estos datos calcule la edad real de la persona expresada en cuantos años tiene con cuantos meses y días, ademas de calcular la cantidad de días vividos, horas vividas y minutos vividos.

     
    • alejandrocaro35

      alejandrocaro35 - 2024-01-01

      ¿Lo querías?: aquí lo tienes:
      El programa ya obtiene la fecha del sistema.

      Proceso sin_titulo
          // Definir variables para la fecha actual y la fecha de nacimiento.
          Definir da, ma, aa Como Enteros;
          Definir dn, mn, an Como Enteros;
      
          // Definir variables para el cálculo de la edad.
          Definir anios, meses, dias, DiasMes Como Enteros;
      
          Definir Anio_min Como Entero;
          Definir Anio_maximo Como Entero;
          Anio_min <- 1583; // El calendario gregoriano introdujo + 1
          Anio_maximo <- Anio_actual; // Año actual
      
          DiasMes <- 0;
      
          Escribir "CÁLCULO DE EDAD";
          // Obtiene la fecha actual del sistema
          da <- Dia_actual;
          ma <- Mes_actual;
          aa <- Anio_actual;
      
          Escribir "Ingrese día de nacimiento";
          Leer dn;
          Escribir "Ingrese mes de nacimiento";
          Leer mn;
          Escribir "Ingrese año de nacimiento";
          Leer an;
      
          // Valida el año de nacimiento
          Si an < Anio_min | an > Anio_maximo Entonces
              Escribir "ERROR: Año de nacimiento inválido. Debe estar entre ", Anio_min, " y ", Anio_maximo;
              // Manejar el año no válido (por ejemplo, salir del proceso o solicitar información nuevamente)
          Sino
              // Comprueba si el mes ingresado es válido
              Si mn < 1 | mn > 12 Entonces
                  Escribir "ERROR EN EL MES";
              Sino
                  // Determina el número de días del mes
                  Si mn=1 | mn=3 | mn=5 | mn=7 | mn=8 | mn=10 | mn=12 Entonces
                      DiasMes<-31;
                  Sino    
                      Si mn=2 Entonces
                          // Chequear año bisiesto
                          Si (an % 4 = 0 & an % 100 <> 0) | an % 400 = 0 Entonces
                              DiasMes<-29;
                          Sino
                              DiasMes<-28;
                          FinSi
                      Sino
                          DiasMes<-30; // Para abril, junio, setiembre, y noviembre
                      FinSi
                  FinSi
      
                  // Compruebe si el día ingresado es válido
                  Si dn > DiasMes Entonces
                      Escribir "ERROR EN EL DÍA";
                  Sino
                      // Ajuste la fecha actual si la fecha de nacimiento aún no ha ocurrido este año
                      Si da < dn Entonces
                          da<-da+DiasMes; // Utilice el número correcto de días del mes.
                          ma<-ma-1;
                      FinSi
                      Si ma < mn Entonces
                          ma<-ma+12;
                          aa<-aa-1;
                      FinSi
                      // Calcular edad
                      dias<-da-dn;
                      meses<-ma-mn;
                      anios<-aa-an;
      
                      dias <- da - dn;
                      meses <- ma - mn;
                      anios <- aa - an;
                  Finsi   
              FinSi
              Escribir "**** RESULTADOS ****";
              Escribir "LA EDAD ES ", anios, " AÑOS, ", meses, " MESES Y ", dias, " DIAS";
          FinSi
      FinProceso
      
      SubProceso retornoDia_actual <- Dia_actual
          Definir retornoDia_actual Como Entero;
          retornoDia_actual <- FechaActual%100;
      FinSubProceso
      
      SubProceso retornoMes_actual <- Mes_actual
          Definir retornoMes_actual Como Entero;
          retornoMes_actual <- trunc(FechaActual/100)%100;
      FinSubProceso
      
      SubProceso retornoAnio_actual <- Anio_actual
          Definir retornoAnio_actual Como Entero;
          retornoAnio_actual <- trunc(FechaActual/10000);  //FechaActual() retorna un solo nro entero en formato AAAAMMDD
      FinSubProceso
      
       

      Last edit: alejandrocaro35 2024-01-19
    • alejandrocaro35

      alejandrocaro35 - 2024-01-06

      Para calcular las horas y minutos vividos entre dos fechas se requieren cálculos muy precisos, que PSeInt no es capaz de alcanzar. Además, el año trópico tampoco es exacto y varía con respecto a la eclíptica. Por lo que PSeInt no es capaz de realizar el cálculo ni de horas ni minutos vividos de una persona. Con el alcance actual de PSeInt, este solo puede contar los días vividos.

       

      Last edit: alejandrocaro35 2024-01-06
  • alejandrocaro35

    alejandrocaro35 - 2024-01-06

    Programa semi modularizado contado también la cantidad de días vividos:

    Proceso edad_exacta_y_dias_vividos
        // Definir variables para la fecha actual y la fecha de nacimiento.
        Definir da, ma, aa Como Enteros;
        Definir dn, mn, an Como Enteros;
    
        // Definir variables para el cálculo de la edad y los días vividos.
        Definir anios, meses, dias Como Enteros;
        Definir totaldiasvividos Como Entero;
    
        Definir Anio_min Como Entero;
        Definir Anio_maximo Como Entero;
    
        Anio_min <- 1583; // El calendario gregoriano introdujo + 1
        Anio_maximo <- Anio_actual; // Año actual
    
        totaldiasvividos <- 0;
    
        Escribir "CÁLCULO DE EDAD";
        // Obtener la fecha actual del sistema
        da <- Dia_actual;
        ma <- Mes_actual;
        aa <- Anio_actual;
    
        Escribir "Ingrese día de nacimiento";
        Leer dn;
        Escribir "Ingrese mes de nacimiento";
        Leer mn;
        Escribir "Ingrese año de nacimiento";
        Leer an;
    
        // Validar el año de nacimiento
        Si an < Anio_min | an > Anio_maximo Entonces
            Escribir "ERROR: Año de nacimiento inválido. Debe estar entre ", Anio_min, " y ", Anio_maximo;
            // Manejar el año no válido (por ejemplo, salir del proceso o solicitar información nuevamente)
        Sino
            // Comprobar si el mes ingresado es válido
            Si mn < 1 | mn > 12 Entonces
                Escribir "ERROR EN EL MES";
            Sino
                // Comprobar si el día ingresado es válido
                Si dn < 1 | dn > DiasDelMes(mn, an) Entonces
                    Escribir "ERROR EN EL DÍA";
                Sino
                    // Calcular edad
                    Si ma < mn | (ma = mn & da < dn) Entonces
                        aa <- aa - 1;
                        ma <- ma + 12;
                    FinSi
                    Si da < dn Entonces
                        ma <- ma - 1;
                        da <- da + DiasDelMes(mn, an);
                    FinSi
                    anios <- aa - an;
                    meses <- ma - mn;
                    dias <- da - dn;
    
                    // Calcular días vividos
                    totaldiasvividos <- DiasVividos(an, mn, dn, aa, ma, da);
    
                    Escribir "**** RESULTADOS ****";
                    Escribir "LA EDAD ES ", anios, " AÑOS, ", meses, " MESES Y ", dias, " DIAS";
                    Escribir "USTED HA VIVIDO ", totaldiasvividos, " DÍAS";
                FinSi
            FinSi
        FinSi
    FinProceso
    
    // Función para calcular los días del mes
    Funcion diasMes <- DiasDelMes(mes, anio)
        Definir DiasMes Como Entero;
        Si mes=1 | mes=3 | mes=5 | mes=7 | mes=8 | mes=10 | mes=12 Entonces
            DiasMes<-31;
        Sino    
            Si mes=2 Entonces
                // Chequear año bisiesto
                Si (anio % 4 = 0 & anio % 100 <> 0) | anio % 400 = 0 Entonces
                    DiasMes<-29;
                Sino
                    DiasMes<-28;
                FinSi
            Sino
                DiasMes<-30; // Para abril, junio, septiembre, y noviembre
            FinSi
        FinSi
    FinFuncion
    
    // Función para calcular los días vividos
    Funcion totalDias <- DiasVividos(an, mn, dn, aa, ma, da)
        Definir totalDias Como Entero;
        Definir i Como Entero;
        totalDias <- 0;
    
        // Sumar los días de los años completos
        Para i <- an Hasta aa - 1 Con Paso 1 Hacer
            Si (i % 4 = 0 & i % 100 <> 0) | i % 400 = 0 Entonces
                totalDias <- totalDias + 366;
            Sino
                totalDias <- totalDias + 365;
            FinSi
        FinPara
    
        // Sumar los días desde el inicio del año actual hasta la fecha actual
        Para i <- 1 Hasta ma - 1 Con Paso 1 Hacer
            totalDias <- totalDias + DiasDelMes(i, aa);
        FinPara
        totalDias <- totalDias + da;
    
        // Restar los días desde el inicio del año de nacimiento hasta la fecha de nacimiento
        Para i <- 1 Hasta mn - 1 Con Paso 1 Hacer
            totalDias <- totalDias - DiasDelMes(i, an);
        FinPara
        totalDias <- totalDias - dn;
    FinFuncion
    
    SubProceso retornoDia_actual <- Dia_actual
        Definir retornoDia_actual Como Entero;
        retornoDia_actual <- FechaActual%100;
    FinSubProceso
    
    SubProceso retornoMes_actual <- Mes_actual
        Definir retornoMes_actual Como Entero;
        retornoMes_actual <- trunc(FechaActual/100)%100;
    FinSubProceso
    
    SubProceso retornoAnio_actual <- Anio_actual
        Definir retornoAnio_actual Como Entero;
        retornoAnio_actual <- trunc(FechaActual/10000);  //FechaActual() retorna un solo nro entero en formato AAAAMMDD
    FinSubProceso
    
     
  • Anonymous

    Anonymous - 2024-04-24
    Post awaiting moderation.
  • Anonymous

    Anonymous - 2024-06-11
    Post awaiting moderation.
  • Anonymous

    Anonymous - 2024-06-29
    Post awaiting moderation.

Anonymous
Anonymous

Add attachments
Cancel