• Domingo 17 de Noviembre de 2024, 19:28

Autor Tema:  algoritmo para identificar que dos vectores son iguales  (Leído 19104 veces)

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
algoritmo para identificar que dos vectores son iguales
« en: Viernes 26 de Diciembre de 2008, 11:35 »
0
Hola,me gustaría que alguien me dijese algún algoritmo que identifique si dos vectores son iguales,es decir que si mete
v1[]={5,6,2} y v2[]={5,2,6},me diga que son iguales, alguien tiene por ahi algúno a mano?

Malik

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
Re: algoritmo para identificar que dos vectores son iguales
« Respuesta #1 en: Viernes 26 de Diciembre de 2008, 12:55 »
0
Cita de: "pacorubio77"
Hola,me gustaría que alguien me dijese algún algoritmo que identifique si dos vectores son iguales,es decir que si mete
v1[]={5,6,2} y v2[]={5,2,6},me diga que son iguales, alguien tiene por ahi algúno a mano?


Pues una chapucilla en pseudocódigo:

Código: Text
  1.  
  2. NumElementos = tamaño(v1) / tamaño(entero)
  3.  
  4. Para i <- 0 hasta NumElementos hacer
  5.    
  6.     Si V1[i] == v2[i] entonces
  7.        
  8.         iguales = iguales + 1
  9.  
  10.     fin si
  11.  
  12. fin para
  13.  
  14. Si iguales == NumElementos entonces
  15.     SON IGUALES
  16. Si no
  17.     NO SON IGUALES
  18. fin si
  19.  
  20.  

eternity

  • Miembro activo
  • **
  • Mensajes: 78
  • Nacionalidad: ar
    • Ver Perfil
    • http://lameriendadejuan.blogspot.com/
Re: algoritmo para identificar que dos vectores son iguales
« Respuesta #2 en: Viernes 26 de Diciembre de 2008, 17:53 »
0
Cita de: "Malik"
Cita de: "pacorubio77"
Hola,me gustaría que alguien me dijese algún algoritmo que identifique si dos vectores son iguales,es decir que si mete
v1[]={5,6,2} y v2[]={5,2,6},me diga que son iguales, alguien tiene por ahi algúno a mano?


Pues una chapucilla en pseudocódigo:

Código: Text
  1.  
  2. NumElementos = tamaño(v1) / tamaño(entero)
  3.  
  4. Para i <- 0 hasta NumElementos hacer
  5.    
  6.     Si V1[i] == v2[i] entonces
  7.        
  8.         iguales = iguales + 1
  9.  
  10.     fin si
  11.  
  12. fin para
  13.  
  14. Si iguales == NumElementos entonces
  15.     SON IGUALES
  16. Si no
  17.     NO SON IGUALES
  18. fin si
  19.  
  20.  

Malik esto no soluciona el problema de pacorubio77... puesto que a mi entender lo que el tiene son vecotres con los mismos elementos pero no en las mismos indices...

lo que deberias hacer es, primero ordenar de forma creciente (o decreciente) los dos vectores y luego si aplicar el algoritmo que te facilito Malik, de esa forma si los vectores son "iguales"... el resultado sera el correcto!

un abrazo!  :beer:


Malik

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
Re: algoritmo para identificar que dos vectores son iguales
« Respuesta #3 en: Viernes 26 de Diciembre de 2008, 19:05 »
0
Pues tienes toda la razón  ;)

No me había fijado que el índice no tenía por que ser el mismo.

sorry  y gracias por la corrección  :good:

ichizuke

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: algoritmo para identificar que dos vectores son iguales
« Respuesta #4 en: Lunes 29 de Diciembre de 2008, 20:02 »
0
hola la verdad aqui tengo un codigo que creo puede servirte. solo un pequeño inconveniente si tiene los mismos numeros pero en diferentes pociciones el resultado sera "los vectores no son iguales"
Código: Text
  1.  
  2. #include<iostream.h>
  3. int l[100],v2[100];
  4. int a,b=0,c=0,d=0,tamanio1,tamanio2;
  5. void main()
  6. {
  7.     cout<<"ingrese el tamanio para el priemer vector"<<endl;
  8.     cin>>tamanio1;
  9.     cout<<"ingrese el tamanio para el segundo vector"<<endl;
  10.     cin>>tamanio2;
  11.     cout<<"ingrese los elementos del primer vector"<<endl;
  12.     for(a=0;a<tamanio1;a++){
  13.         cout<<"ingrese elemento de la pocicion ["<<a<<"]t";
  14.         cin>>l[a];
  15.     }
  16.     cout<<endl<<"ingrese elementos del segundo vector"<<endl;
  17.     for(a=0;a<tamanio2;a++){
  18.         cout<<"ingrese elemento de la pocicion ["<<a<<"]t";
  19.         cin>>v2[a];
  20.     }
  21.  
  22.     //pienso que lo primero seria ver si los vectores tienen el mismo tamanio
  23.     //o mejor dicho la misma cantidad de elementos
  24.     for(a=0;l[a];a++){
  25.         c++;//contador de elementos del vector l
  26.     }
  27.     for(a=0;v2[a];a++){
  28.         d++;//contador de elementos del vector v2
  29.     }
  30.     if(c==d){//si tienen la misma cantidad de elementos entonces
  31.         for(a=0;a<4;a++){
  32.             if(l[a]==v2[a]){
  33.                 b++;//contador de cantidad de elementos iguales
  34.             }
  35.         }
  36.     }
  37.     if(b==4)
  38.         cout<<endl<<"los vectores son iguales"<<endl;
  39.     else
  40.         cout<<endl<<"los vectores no son iguales"<<endl;
  41.  
  42. }
  43.  
  44.  
espero te sea de algo util  :hola:  adios y exitos.

eternity

  • Miembro activo
  • **
  • Mensajes: 78
  • Nacionalidad: ar
    • Ver Perfil
    • http://lameriendadejuan.blogspot.com/
Re: algoritmo para identificar que dos vectores son iguales
« Respuesta #5 en: Lunes 29 de Diciembre de 2008, 20:07 »
0
Cita de: "ichizuke"
hola la verdad aqui tengo un codigo que creo puede servirte. solo un pequeño inconveniente si tiene los mismos numeros pero en diferentes pociciones el resultado sera "los vectores no son iguales"

vale leer los post anteriores!

un abrazo!  :beer:


ichizuke

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: algoritmo para identificar que dos vectores son iguales
« Respuesta #6 en: Lunes 29 de Diciembre de 2008, 20:27 »
0
o que pena la verdad lo inclui en lenguaje c++ por ser un foro de c++/c . no me fije que pedia el algoritmo y no un codigo en un lenguaje determinado :D  pero la verdad hace un ratito que no practico con psudocodigo. en fin...

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Re: algoritmo para identificar que dos vectores son iguales
« Respuesta #7 en: Lunes 5 de Enero de 2009, 14:24 »
0
es el tipico ejercicio de maquina de turing.  :devil:

si son de tamaño distinto no son iguales.

por cada elemento del array 1 , buscalo en el aray 2 , y si coincide, borra el elemento del array 2 y continua.
al final, encontraras, o bien un elemento que no esta en el array 2 (distintos) o bien acabaras el array1 (iguales).
Código: Text
  1.  
  2. Para i <- 0 hasta NumElementos hacer
  3.    Para e <- 0 hasta NumElementos hacer
  4.        Si V1[i] == aux[e] entonces
  5.          eliminar aux[e];   //borrarlo de la lista, marcarlo cion un caracter diferente , etc...
  6.          continuar
  7.       fin SI
  8.  
  9.     si (e==numElementos) //se salio del array aux sin encontrarlo
  10.           error "no son iguales"
  11.  
  12.     fin para
  13. fin para
  14.  
  15. O:n*n
  16.  
  17.  
  18.  

DRiMeR

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
    • http://www.informatizados.es
Re: algoritmo para identificar que dos vectores son iguales
« Respuesta #8 en: Viernes 23 de Enero de 2009, 12:22 »
0
Cita de: "diego.martinez"
es el tipico ejercicio de maquina de turing.  :devil:

si son de tamaño distinto no son iguales.

por cada elemento del array 1 , buscalo en el aray 2 , y si coincide, borra el elemento del array 2 y continua.
al final, encontraras, o bien un elemento que no esta en el array 2 (distintos) o bien acabaras el array1 (iguales).

Pero quizá no le interesa borrar los elementos del vector, no? Para eso, mejor copiarlo en otro array temporal donde sí podria ir borrando. Y ya puestos, si ese array temporal está ordenado.... sería más rápido buscar los elementos.

Voy a escribir mi propuesta en pseudocodigo:

Código: Text
  1. FUNCION vectores_iguales(int v1[tam1], int v2[tam2]) : ENTERO
  2.    int v_aux[tam1]
  3.    int i
  4.    int elem
  5.    int encontrado=1
  6.    
  7.    SI (tam1 != tam2)
  8.       DEVOLVER 0
  9.  
  10.    PARA i=0 HASTA tam-1
  11.       elem = v2[i]
  12.       insercionBinaria(v_aux, elem)
  13.    FINPARA     //ya tenemos v_aux ordenado
  14.  
  15.    i = 0
  16.    MIENTRAS i<tam-1   Y   encontrado
  17.       encontrado = busquedaBinaria(v_aux, v1[i])
  18.       i = i+1
  19.    FINMIENTRAS
  20.  
  21.    DEVOLVER encontrado
  22.  
  23. FIN_FUNCION 
  24.  

Sé que se podría hacer de otras muchas maneras, y que quizá me he complicado un poco la vida... pero para vectores muy grandes, sí podría ser eficiente.