SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: franc en Martes 20 de Enero de 2004, 21:58

Título: Ayuda Please !
Publicado por: franc en Martes 20 de Enero de 2004, 21:58
Mira tengo estos "codigos" y necesito construir 3 programas ( uno para cada codigo ) que demuestre que ese codigo funciona correctamente, es decir que hay que usar cada codigo.

Yo se lo que hace ( vamos creo que lo se ) pero a la hora de trabajar con el codigo consigo "demostrar" que funciona.

Se supone que los 2 codigos comparan cadenas de forma similar a como lo hace la funcion strcmp()


Si alguien me puede ayudar se lo agradecere ;)

Código: Text
  1.  
  2.  
  3. int compara1 (char *cad1, char *cad2)
  4. {
  5. register int i;
  6. for (i = 0; cad1[i]; i++) if (cad1[i] - cad2[i]) return (cad1[i] - cad2[i]);
  7. return 0;
  8. }
  9.  
  10.  

Código: Text
  1.  
  2. int compara2 (char *cad1, char *cad2)
  3. {
  4. char *p1, *p2;
  5. p1 = cad1;
  6. p2 = cad2;
  7. while (*p1) {
  8. if (*p1 - *p2) return (*p1 - *p2);
  9. else {
  10. p1++;
  11. p2++;
  12. }
  13. }
  14. return 0;
  15. }
  16.  
  17.  

Código: Text
  1.  
  2. int compara3 (char *cad1, char *cad2)
  3. {
  4. char *p1, *p2;
  5. p1 = cad1;
  6. p2 = cad2;
  7. for (; *p1; p1++, p2++) if (*p1 - *p2) return (*p1 - *p2);
  8. return 0;
  9. }
  10.  
  11.  
  12.  


gracias
Título: Re: Ayuda Please !
Publicado por: dreadlock en Miércoles 21 de Enero de 2004, 01:45
Hola, espero haber entendido, quieres aplicar esos 3 codigos uno en cada programa, eso es facil, tenemos el primero


Código: Text
  1.  
  2. //
  3. //este programa compara dos cadenas
  4. //la funcion compara regresa 0 si son iguales
  5. #include <stdio.h>
  6. #include <conio.h>
  7.  
  8. int compara1 (char *cad1, char *cad2){
  9. register int i;
  10. for (i = 0; cad1[i]; i++)
  11. if (cad1[i] - cad2[i])
  12. return (cad1[i] - cad2[i]);
  13. return 0;}
  14.  
  15. int main(){
  16. int y;
  17. char *text1,*text2;
  18. clrscr();
  19. printf("Compara cadenas");
  20. printf("Ingresa la cadena 1: ");
  21. fflush(stdin);
  22. gets(text1);
  23. printf("\nIngresa la cadena 2: ");
  24. fflush(stdin);
  25. gets(text2);
  26. printf("\n------------------------------------->");
  27. y=compara1(text1,text2);
  28. if(y==0)
  29. printf("\n Las cadenas son iguales");
  30. if(y<0||y>0)
  31. printf("\n Las cadenas son distintas");
  32. getche();
  33. return (0);
  34. }
  35.  
  36.  

Y asi deberas hacer con las otras 2 funciones, como veras no es dificil, solo debes poner atencion en que valor regresa la funcion si es igual y desigual, espero que esto te ayude para las otras dos,
Título: Re: Ayuda Please !
Publicado por: shephiroth en Miércoles 21 de Enero de 2004, 13:07
Buenas. Lo unico que debes de tener claro en esas funciones porque "se sale un poco de lo normal" por asi decirlo, el la resta de caracteres. En una resta, por ejemplo "a"-"H" lo que ocurre es que pasa ambas cadenas a numeros mediante la tabla ascii, y de esa forma puede realizar la resta.  Sabiendo eso el ejercicio te debería resultar facilón ^_^
Título: Re: Ayuda Please !
Publicado por: franc en Jueves 22 de Enero de 2004, 15:55
ya lo he entendido, muchas gracias ;)