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.

Permite al usuario cambiar el valor de “5” dentro de la función de arreglo.

Como sugiere mi título, soy un principiante que está jugando un poco con arreglos. Aunque intento hacer lo mejor que puedo, ¿no soy capaz de cambiar adecuadamente los valores dentro de un arreglo? Como pueden ver, ¿sólo los últimos 5 dígitos son correctos en el arreglo pero no los primeros 3? ¿Por qué es ese el caso? Publicaré mi código a continuación para que todos puedan ver a qué me refiero:

Salida de este código si yo como usuario ingreso el valor “3” es:

(Array antes): (5) (8) (2) (9) (1) (7) (4) (3)

Por favor inserte nuevos datos en el primer arreglo con valor 5: 3
Convirtiendo char anumber = 51 a int ret = 3

(Array después): (51) (10) (0) (9) (1) (7) (4) (3)
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema en el código es que no está convirtiendo adecuadamente la entrada de caracteres del usuario en un valor entero. Esto se debe a que la función strtol sólo se aplica al primer índice del arreglo (&anumber[0]), pero la entrada del usuario puede consistir en múltiples caracteres que necesitan ser convertidos.

    Para solucionar esto, se debe aplicar la función strtol al arreglo completo anumber, de la siguiente manera:

    long ret[MAX_ARRAY];
    
    for (int i = 0; i < MAX_ARRAY; ++i)
    {
        ret[i] = strtol(&anumber[i], NULL, 10);
    }
    
    printf("\n(Array after): ");
    for (int i = 0; i < MAX_ARRAY; ++i)
    {
        printf("(%ld) ", ret[i]);
    }
    

    Esto convertirá adecuadamente cada carácter en el arreglo anumber en su valor entero correspondiente y mostrará correctamente el arreglo actualizado.

Comments are closed.