¿cuál es el problema con mi código, que no está regresando valor si b = - 1

votos
2

¿cuál es el problema con mi código, que no está regresando valor si b = - 1

 #include <stdio.h>

int find_even(int k){
    int a,b,i=0;
    scanf(%d,&a);
    while (a>=0){
        if(i<k){
            if (a>=0 && a%2 == 0){
                b=a;
                i++;
            }

        }
        scanf(%d,&a);
    }
    if (i<k){
        b=-1;
    }
    return b;

}

void main(){
    int k;
    printf(Enter the value of K : );
    scanf(%d,&k);
    printf(Enter the sequence of non negative integers and at end enter a negative integer  : );
    if (find_even(k)<0)
        printf(No %dth even integer exist.,k);
    else
        printf(Result = %d. ,find_even(k));
}

Estoy tratando de obtener la orden k aun dígitos, pero no estoy recibiendo ningún valor devuelto siempre que el valor de b no es igual a -1

Publicado el 19/09/2018 a las 17:02
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

La razón por la que no parece tener salida a menos que indica -1 se debe a que se debe introducir al menos klos números pares para (i<k)ser verdad. Cada vez que introduzca un número par positivo en el bucle, incrementos i:

if (a>=0 && a%2 == 0){
    b=a;
    i++;  // here

Así que si se introduce un número positivo, incluso (por ejemplo 2) más de k veces, obtendrá un resultado que no es -1.

Después de regresar de la función, si el resultado es negativo, lo hace:

printf("No %dth even integer exist.",k);

Si el resultado es positivo, que vaya de nuevo en la función por segunda vez:

printf("Result = %d. ",find_even(k)); // This is going to re-enter find_even

Creo que lo que quiere aquí es guardar el resultado de la llamada a la función y actuar sobre eso. Me gusta esto:

int result = find_even(k);
if (result<0)
    printf("No %dth even integer exist.",k);
else
    printf("Result = %d. ", result);

Editar: Creo que entiendo lo que está tratando de hacer ahora. Fue un poco confuso dada la solicitud y la forma en que las cosas se alinean en la pantalla. Añada \nal final del printfhacer esto menos confuso en el terminal:

printf("Enter the sequence of non negative integers and at end enter a negative integer  :\n");

Ahora, toda la entrada será alineado y más sentido.

Además, tenga cuidado con scanf()lo que no es la función más fiable. Es bueno para los retoques, pero no es seguro para uso general. Echa un vistazo a esta pequeña guía para obtener más información sobre scanfy todas sus complejidades a usarlo correctamente.

Respondida el 19/09/2018 a las 17:27
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more