Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Dumy en 1 Noviembre 2023, 19:41 pm



Título: Omparacion de 2 arrays
Publicado por: Dumy en 1 Noviembre 2023, 19:41 pm
Hola estaba por responder el otro tema con el mismo nombre, pero me salio una advertencia, asi que inicio nuevo tema:

Veran estoy intentando solventar esto:

Función “numeroNumeroAciertos”. Devuelve el número de aciertos que ha tenido el usuario.

Se trata de hacer 2 arrays que se deben comparar, tengo entendido que primero debes comparar su tamaño y luego valor a valor cada posición, esto es lo poco que he conseguido, lo que no condigo ss hacer la comparativa y 2 for anidados, algo que no entiendo del todo:

void numeros_de_aciertos() {

//elementos a comparar
//contador de aciertos aciertos
//comparación con if
//bucle

    int f, aciertos,arrayjugador[10],numeroaleatorio[10];

    aciertos = 1;

    int longituddelarreglo = sizeof(arrayjugador) / sizeof(arrayjugador[10]);
    int longituddelotroarreglo = sizeof(numeroaleatorio) / sizeof(numeroaleatorio[10]);

    if(longituddelarreglo !=longituddelotroarreglo) {

        printf("los arreglos no son iguales");

       
    }

}

Si alguien me explicara el procedemiento




Título: Re: Omparacion de 2 arrays
Publicado por: MAFUS en 2 Noviembre 2023, 12:35 pm
Para conseguir el número de elementos de un array se suele usar el índice 0:

Código:
size_t n_elem = sizeof(array) / sizeof(array[0]);

Lo anterior sólo sirve para un array que está en el mismo bloque, cuando pases este array como parámetro de una función esta información se perderá.

Para saber dos arrays tienen los mismos elementos compáralos elemento a elemento usando el mismo índice:

Código:
bool iguales = true;
for(int i=0; i<n_elem; ++i){
   if(array_1[i] != array_2[i]) {
      iguales = false;
      break;
   }
}


Título: Re: Omparacion de 2 arrays
Publicado por: Dumy en 2 Noviembre 2023, 15:15 pm
Entonces si te entendi bien:

for(int i=0; i<n_elem; ++i){
   if(array_1 != array_2) {
      iguales = false;

Con el for decimos empieza en la posicion 0 y acaba en la 10 y ckn el if decimos si la posicion (representada en la i), del array 1 no es igual a la posición i del array 2 entonces false