es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tengo problemas con este programa sencillo.

El programa simplemente debe calcular la edad del usuario restando su fecha de nacimiento del año actual. Cuando ejecuto el programa, se compila con éxito pero obtengo un número largo como -215863352. Las condiciones if y else se agregan solo para probarlas, estaba escribiendo varios programas usándolas para asegurarme de entender la sintaxis en c. Supongo que me falta algo simple pero no puedo averiguarlo.

“`
#include <stdio.h>

int main()
{
int year;
int cyear;
int age = cyear – year;

<pre><code>printf("Por favor ingrese el año en que nació: \n");
scanf("%i", &year);
printf("Ahora ingrese el año actual: \n");
scanf("%i", &cyear);

if (1 + 1 == 2) {
printf("Debe tener %i años", age);
}
else {
printf("No se puede calcular la edad, ADIÓS:\n");
}

return 0;
</code></pre>

}
“`</stdio.h>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema con el programa es que la variable “age” está asignada antes de que las variables “year” y “cyear” sean ingresadas por el usuario. Esto significa que la variable “age” está simplemente restando valores aleatorios de la memoria, resultando en un número negativo grande. Para solucionar esto, mueva la ecuación para “age” después de que el usuario ingrese los valores para “year” y “cyear”.

    En adición, es buena práctica agregar una condición para manejar entradas inválidas, como edades negativas.

    “`c
    #include <stdio.h>

    int main()
    {
    int year;
    int cyear;

    printf("Por favor, ingrese el año de su nacimiento:\n");
    scanf("%i", &year);
    printf("Ahora ingrese el año actual:\n");
    scanf("%i", &cyear);
    
    if(year > cyear) // condición agregada para manejar entradas inválidas
    {
        printf("Entrada inválida, ADIÓS.\n");
    }
    else
    {
        int age = cyear - year; // edad se calcula después del ingreso del usuario
    
        if(age < 0)
        {
            printf("Entrada inválida, ADIÓS.\n");
        }
        else if (1 + 1 == 2)
        {
            printf("Debe tener %d años de edad.\n", age);
        }
        else
        {
            printf("No se puede calcular la edad, ADIÓS.\n");
        }
    }
    return 0;
    

    }
    “`</stdio.h>

Comments are closed.