Decir si dos vectores son iguales en C

Iniciado por estudiante_1, 4 Enero 2016, 12:40 PM

0 Miembros y 1 Visitante están viendo este tema.

estudiante_1

Hola, me encuentro con el mismo problema que con las matrices, en este caso con vectores. Tengo que compararlos y ver si son iguales.
este es el código:
  #include<stdio.h>
        #include<stdlib.h>

        int soniguales(int v[5],int a[5],int aux){
            int i;
        for(i=0;i<5;i++){
        if(v[i]!=a[i]) {
            aux=1;
        }
        }
        return (aux);
        }




    int main(void){
    int v[5],a[5],i,aux;
    for(i=0;i<5;i++){
    scanf("%d",&v[i]);
    }
    for(i=0;i<5;i++){
    scanf("%d",&a[i]);
    }
    soniguales(v,a,aux);

    if(aux==1) printf("Son distintos\n");
    else printf("Son iguales");
   







    system("pause");
    return(0);

    }

user-marcos

#1
No tiene mucho sentido la variable aux, y recuerda que soniguales es un función y por lo tanto te devuelve un valor, y como tu lo tienes no la utilizas como tal, te pongo una posible solución

int soniguales(int v[],int a[]){
  int i;
  for(i=0;i<5;i++)
    if(v[i]!=a[i])
      return 1;
  return 0;
}




int main(void){
  int v[5],a[5],i;
  for(i=0;i<5;i++){
    scanf("%d",&v[i]);
  }
  for(i=0;i<5;i++){
    scanf("%d",&a[i]);
  }  
  if(soniguales(v,a)) printf("Son distintos\n");
  else printf("Son iguales");
 
  system("pause");
  return(0);
}

estudiante_1

Cita de: user-marcos en  4 Enero 2016, 12:49 PM


int soniguales(int v[],int a[]){
   int i;
   for(i=0;i<5;i++)
     if(v[i]!=a[i])
       return 1;
   return 0;
}






Pero así solo comparas la primera iteracción.

user-marcos

El bucle sólo para cuando haya encontrado un elemento distinto o cumpla la condición que le has puesto i < 5.

MAFUS

A ver, voy a explicar como hacer una buena interfaz de función.
Una vez pensado un buen nombre, descriptivo de lo que hace, muy importante pensar que datos necesitamos pasarle para que haga su trabajo.
Hay que pasarle solo esos datos. La lista de argumentos no debe servir para crear variables locales, como haces con aux. Esas ya se declararán dentro de la función.
También debemos pensar en si la función nos debe devolver un resultado y qué resultado necesitamos que nos devuelva.
Teniendo claro eso podremos empezar a pensar como debe hacer su trabajo.


JavierScars

#5
El código que te pasaron esta bien .

Y al tuyo le definiste aux como entero pero no le diste ningún valor y lo pasaste como argumento.
1) No hay necesidad de usar aux.
2) Si lo quieres usar para tu comodidad mejor definelo y dale un valor dentro de la función que lo usa no en main() donde es inutil. Recuerda que la función que hiciste es de tipo entero por lo tanto puedes colocarla a ella en la condición para el if en vez de usar el aux

Saludos
Usa lo malo de la vida a tu favor, escala montañas de problemas para deslizarte sobre soluciones, derrumba muros de decepciones para encontrar la libertar de la felicidad,  y quema la leña del fracaso para calentarte con el éxito. Recuerda que sin la oscuridad la luz no brillaría tanto.