Sv Community El Salvador

Soporte y Tecnología => Programación => C/C++ => Mensaje iniciado por: loke en noviembre 08, 2012, 10:18:33 am

Título: Comparar 2 cadenas sin usar string.h
Publicado por: loke en noviembre 08, 2012, 10:18:33 am
Bueno tengo un eercicio que no logro saber como hacerlo, es de comparar 2 cadenas y que diga el mensaje segun la comparacion, son iguales, la primera es mayor que la segunda o la segunda es mayor que la primera.
El problema es que lo tengo que hacer sin usar la libreria string.h si alguien sabe mas o menos como hacer el proceso se lo agradeceria.
Título: Re:Comparar 2 cadenas sin usar string.h
Publicado por: g00mba en noviembre 08, 2012, 10:39:03 am
parsealo no como una string sino como algun otro tipo de dato. hexadecimal, binario, etc.
Título: Re:Comparar 2 cadenas sin usar string.h
Publicado por: hkadejo en noviembre 08, 2012, 12:29:40 pm
Bueno tengo un eercicio que no logro saber como hacerlo, es de comparar 2 cadenas y que diga el mensaje segun la comparacion, son iguales, la primera es mayor que la segunda o la segunda es mayor que la primera.
El problema es que lo tengo que hacer sin usar la libreria string.h si alguien sabe mas o menos como hacer el proceso se lo agradeceria.

Si la primera es mayor a la segunda en que?? longitud???
Lo que se me ocurre es que recorras ambas cadenas caracter por caracter y hagas la comparacion char por char.
Título: Re:Comparar 2 cadenas sin usar string.h
Publicado por: loke en noviembre 09, 2012, 12:38:24 pm
Si es caracter por caracter la cosa es que como lo tenes que hacer sin usar la libreria string.h.
Título: Re:Comparar 2 cadenas sin usar string.h
Publicado por: rdoggsv en noviembre 09, 2012, 01:12:51 pm
Master crees que te sirve este ejemplo:

Código: [Seleccionar]
#include<stdio.h>
int scmp(char *,char *);
void main(void)
{
   char str1[25],str2[25];
   int dif;
   clrscr();
   printf("\nEnter the first String:");
   gets(str1);
   printf("\nEnter the second String:");
   gets(str2);


   dif=scmp(str1,str2);                                                         //1
   if(dif>0)
       printf("%s comes after %s",str1,str2);
   else
   {
       if(dif<0)
  printf("%s comes after %s",str2,str1);
       else
  printf("both the strings are same");
   }
}


int scmp(char *s1,char *s2)
{
    if(*s1!='\0'&&*s2!='\0')                                                    // 2     
    {
         while( *s1-*s2==0 && (*s1!='\0' || *s2!='\0'))             // 3
         {
               s1++;
               s2++;
         }
    }
    return(*s1-*s2);                                                                 // 4
}

No tengo instalado ahorita C pero creo que funciona. Fue copy pasteado de aquí:

http://www.programmingspark.com/2012/03/c-program-to-compare-two-strings.html

La verdad es que ese es uno de los ejercicios que más repiten en los colegios/universidades para aprender el uso de cadenas, si buscas un poco se encuentran varios ejemplos.
Título: Re:Comparar 2 cadenas sin usar string.h
Publicado por: JaiMe en noviembre 09, 2012, 04:59:23 pm
Aqui les dejo el ejemplo que puso rdoggsv en "vivo": http://ideone.com/lzzzEC (http://ideone.com/lzzzEC). Modifique main() un poquito y al parecer funciona

(http://i.minus.com/ib1Tp3JzLJ3e2f.png)
Título: Re:Comparar 2 cadenas sin usar string.h
Publicado por: rdoggsv en enero 13, 2013, 04:32:59 am
Hey que buena esta esa página Jaime gracias por compartir. En mi caso no tengo en la pc del trabajo instalado C y me sirve bastante ese compilador online