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.

Verifica si un número ya está presente en un arreglo con valores introducidos por el usuario.

Estoy aprendiendo a programar en C y estoy tratando de crear un programa que escanee una cantidad determinada de números establecida por el usuario y los almacene en un arreglo que utilizaré más adelante, pero los números introducidos por el usuario no pueden repetirse, así que estoy tratando de implementar esta restricción con una comparación dentro de un bucle for.
He probado con otros tipos de bucles, pero no puedo hacer que funcione correctamente.

¡Gracias!

Aquí está mi código hasta ahora:

#include<stdio.h>

int main() {
    int n;
    int i;
    int num;

    printf("Introduce la cantidad de números que deseas ingresar \n");
    scanf("%d", &n);

    int N[n];

    printf("Introduce tus números \n");
    for (i = 0; i < n; i++) {
        scanf("%d", &num);

        if (num == N[i]) {
            printf("Ya has introducido este número, intenta de nuevo");
        }

        N[i] = num;
        printf("____________ \n");  
    }

    getchar();
    getchar();
    return 0;   
}

Cuando ejecuto este programa, la salida es la siguiente y no tengo idea por qué:

“`
Introduce la cantidad de números que deseas ingresar
5
Introduce el primer valor
1

<hr />

<hr />

<hr />

<hr />

Ya has introducido este número, intenta de nuevo ____
“`</stdio.h>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución

    Para asegurarnos de que el usuario no ingrese un valor que ya exista en el array, necesitamos comparar cada nuevo valor con todos los valores anteriores en el array. Podemos agregar un bucle for anidado dentro del bucle que pide al usuario la entrada para comparar la entrada actual con todas las entradas anteriores almacenadas en el array.

    Aquí está el código actualizado con los cambios necesarios:

    #include <stdio.h>
    
    int main() {
        int n, i, j, num;
        printf("Introduce la cantidad de números que registrarás: ");
        scanf("%d", &n);
        int N[n];
    
        printf("Introduce tus números:\n");
        for (i = 0; i < n; i++) {
            scanf("%d", &num);
            for (j = 0; j < i; j++) {
                if (num == N[j]) {
                    printf("Ya has introducido este número, intenta nuevamente: ");
                    i--;
                    break;
                }
            }
            N[i] = num;
        }
    
        printf("Los números únicos ingresados son: ");
        for (i = 0; i < n; i++) {
            printf("%d ", N[i]);
        }
        printf("\n");
    
        return 0;
    }
    

    En este código, primero declaramos las variables para el contador del bucle, el valor de entrada y el array para almacenar las entradas. Luego, le pedimos al usuario la cantidad de entradas que proporcionará y creamos un array de longitud variable llamado N con esa cantidad de elementos.

    En el bucle que solicita la entrada del usuario, obtenemos primero el valor de entrada y luego lo comparamos con todos los valores almacenados en el array hasta el momento. Si encontramos un valor coincidente, mostramos un mensaje de error y pedimos al usuario que ingrese el valor nuevamente. Si no hay coincidencias, almacenamos el valor de entrada en el array.

    Finalmente, recorremos el array e imprimimos todos los valores únicos que se ingresaron.

    Con estos cambios, el programa ahora manejará adecuadamente y rechazará entradas duplicadas.</stdio.h>

Comments are closed.