Autor Tema: comparar dos array  (Leído 6045 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado andres1308

  • PIC10
  • *
  • Mensajes: 5
comparar dos array
« en: 23 de Mayo de 2013, 22:21:37 »
Buen dia
estoy tratando de comparar dos arreglos char de 11 posiciones
uso la funcion strcmp pero siempre me da el mismo resultado
quisiera saber si alguien me podria ayudar, o si conoce otra forma de hacerlo
Gracias

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: comparar dos array
« Respuesta #1 en: 23 de Mayo de 2013, 23:00:03 »
Y cual es el código?
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: comparar dos array
« Respuesta #2 en: 23 de Mayo de 2013, 23:45:48 »

Código: C
  1. unsigned char compara(char *text1,char *text2)
  2. {
  3. unsigned char cont;
  4. for(cont = 0; cont < 11;cont++)if(text1[cont] != text2[cont]) return 0;
  5. return 1;
  6. }//
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: comparar dos array
« Respuesta #3 en: 24 de Mayo de 2013, 01:11:48 »
Kallitos:
         si no ponés todo el código no podremos ayudarte.
te pongo un ejemplo con la función y con strcmp.

Código: C
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4.  
  5. int compara_cadenas(char *ptr1,char *ptr2);
  6.  
  7.  
  8. int main()
  9. {
  10.    char texto1[11] = {'1','2','3','4','5','6','7','8','9','0','1'};
  11.    char texto2[11] = {'1','2','3','4','5','6','7','8','9','0','1'};
  12.    
  13.    printf( "texto1=%s\n", texto1 );
  14.    printf( "texto2=%s\n", texto2 );
  15.    printf( "comparamos cadenas. Resultado: %d\n", compara_cadenas( texto1, texto2) );
  16.  
  17.  ;
  18.    
  19.    if( !strcmp( texto1, texto2))  printf( "cadenas iguales\n" ); // si las cadenas son iguales retorna 0
  20.    else printf( "cadenas distintas\n" );
  21.    
  22.  
  23.    system("pause");
  24.     return 0;
  25.  
  26.  
  27. }
  28.  
  29. int compara_cadenas(char *ptr1,char *ptr2)
  30.   {
  31.         unsigned char cont;
  32.         for(cont = 0; cont < 11;cont++)
  33.      {
  34.       printf( "caracter %d de texto1=%c\n", cont, ptr1[cont] );
  35.       printf( "caracter %d de texto2=%c\n", cont, ptr2[cont]);
  36.       if(ptr1[cont] != ptr2[cont]) return 0; // si son distintas retorna 0
  37.      }
  38.         return 1; // si son iguales retorna 1
  39.  
  40.   }
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: comparar dos array
« Respuesta #4 en: 24 de Mayo de 2013, 09:58:59 »
Estimado jukinch, yo no estoy solicitando la ayuda  :mrgreen:, el codigo que puse fue como ejemplo para que se guie andres1308, ya él lo ajustará a su necesidad.

saludos  :)
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: comparar dos array
« Respuesta #5 en: 24 de Mayo de 2013, 13:05:11 »
Hola, el strcmp se debe usar unicamente para comparar string C, para comparar arrays o arreglos se debe usar la función memcmp

Código: C
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main()
  5. {
  6.    char texto1[11] = {'1','2','3','4','5','6','7','8','9','0','1'};
  7.    char texto2[11] = {'1','2','3','4','5','6','7','8','9','0','1'};
  8.    
  9.  
  10.    if( !memcmp( texto1, texto2, sizeof( texto1 )))
  11.      printf( "cadenas iguales\n" );
  12.    else
  13.      printf( "cadenas distintas\n" );
  14. }

Saludos !

« Última modificación: 24 de Mayo de 2013, 13:35:44 por RICHI777 »

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: comparar dos array
« Respuesta #6 en: 24 de Mayo de 2013, 13:21:19 »
Ok Kallitos perdón por la confusión .
Gracias Richi777 por la corrección
Saludos a ambos
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado cguzman

  • PIC10
  • *
  • Mensajes: 16
Re: comparar dos array
« Respuesta #7 en: 28 de Mayo de 2013, 18:21:42 »
hazlo con un bucle

for( x=0; x=numero de caracteres de array ; x++ )
{
if( array1
  • == array2
  • )

{
xxxxxxxxxxxxxxxxxxxxxx
}
}

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: comparar dos array
« Respuesta #8 en: 28 de Mayo de 2013, 19:23:57 »
hazlo con un bucle

for( x=0; x=numero de caracteres de array ; x++ )
{
if( array1
  • == array2
  • )

{
xxxxxxxxxxxxxxxxxxxxxx
}
}

Hola, lo que escribiste funciona pero es mas lento que el memcmp.

Saludos !


 

anything