Algoritmia - Ayuda de un codigo en Turbo C

 
Vista:

Ayuda de un codigo en Turbo C

Publicado por Marco Antonio (2 intervenciones) el 02/04/2006 01:21:21
Hola, soy estudiante de Informática en la UMAR de Puerto Escondido Oaxaca, y la verdad no entiendo mucho, alguien me podría ayudar con el desarrollo de un par de ejercicios que tengo que presentar en los proximos día. aqui les envio por si alguien me ayuda.

*

Se quiere calcular la edad de un individuo, para ello, se va a tener como entrada dos fechas en el formato día (1 a 31), mes (1 a 12) y año (entero de cuatro cifras), correspondiente a la fecha de nacimiento y a la fecha actual, respectivamente; Escribir un programa que calcule la edad del individuo. Si la fecha de un bebe (menos de un año), la edad se debe dar en meses y dias, en caso contrario, la edad se calcula en 2005.

Ejemplos:

Fecha de Nacimiento: 12/02/2006
Fecha de Actual: 15/03/2006

salida: 1 mes y 3 dias.

Fecha de Nacimiento: 18/01/2005
Fecha de Actual: 15/02/2005

salida: 28 dias.

Fecha de Nacimiento: 27/07/1984
Fecha de Actual: 28/03/2006

salida: 21 años.

Fecha de Nacimiento: 28/12/2005
Fecha de Actual: 06/01/2006

salida: 9 dias.

Si alguien se la sabe, me manda en codigo Turbo C.

muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Cálculo de edad a partir de fechas

Publicado por Alejandro (307 intervenciones) el 05/03/2024 20:57:03
¡Claro, Marco! Aquí tienes un programa simple en Turbo C para calcular la edad de un individuo según las fechas de nacimiento y actual proporcionadas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <stdio.h>
 
void calcularEdad(int diaNac, int mesNac, int anoNac, int diaAct, int mesAct, int anoAct);
 
int main() {
    int diaNac, mesNac, anoNac;
    int diaAct, mesAct, anoAct;
 
    printf("Ingrese la fecha de nacimiento (dd/mm/aaaa): ");
    scanf("%d/%d/%d", &diaNac, &mesNac, &anoNac);
 
    printf("Ingrese la fecha actual (dd/mm/aaaa): ");
    scanf("%d/%d/%d", &diaAct, &mesAct, &anoAct);
 
    calcularEdad(diaNac, mesNac, anoNac, diaAct, mesAct, anoAct);
 
    return 0;
}
 
void calcularEdad(int diaNac, int mesNac, int anoNac, int diaAct, int mesAct, int anoAct) {
    if (anoNac > anoAct || (anoNac == anoAct && (mesNac > mesAct || (mesNac == mesAct && diaNac > diaAct)))) {
        printf("Fecha de nacimiento inválida.\n");
        return;
    }
 
    int edadAnos = anoAct - anoNac;
    int edadMeses = mesAct - mesNac;
    int edadDias = diaAct - diaNac;
 
    if (edadMeses < 0) {
        edadAnos--;
        edadMeses += 12;
    }
 
    if (edadDias < 0) {
        int mesPrevio = mesAct - 1;
        if (mesPrevio == 0) {
            mesPrevio = 12;
            edadAnos--;
        }
 
        // Calcular los días restantes en el mes anterior
        int diasEnMesPrevio;
        switch (mesPrevio) {
            case 1: case 3: case 5: case 7: case 8: case 10: case 12:
                diasEnMesPrevio = 31;
                break;
            case 4: case 6: case 9: case 11:
                diasEnMesPrevio = 30;
                break;
            case 2:
                // Verificar si el año es bisiesto
                if ((anoAct % 4 == 0 && anoAct % 100 != 0) || (anoAct % 400 == 0))
                    diasEnMesPrevio = 29;
                else
                    diasEnMesPrevio = 28;
                break;
            default:
                diasEnMesPrevio = 0;  // Mes inválido
        }
 
        edadDias += diasEnMesPrevio;
        edadMeses--;
    }
 
    if (edadAnos == 0 && edadMeses == 0)
        printf("%d dias.\n", edadDias);
    else if (edadAnos == 0)
        printf("%d meses y %d dias.\n", edadMeses, edadDias);
    else
        printf("%d años.\n", edadAnos);
}

Por favor, ten en cuenta que Turbo C es un compilador bastante antiguo y puede que no sea tan compatible con los estándares actuales. Este código fue escrito considerando las prácticas comunes de la época en que Turbo C era popular.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar