• Miércoles 6 de Noviembre de 2024, 09:37

Autor Tema:  intercalar cadenas  (Leído 6915 veces)

crocop

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
intercalar cadenas
« en: Domingo 26 de Octubre de 2008, 05:06 »
0
hola tengo un problema con este programa ; el programa intercala cadenas por ejemplo:
cadena1=ola , cadena2=chao , cadena3=oclhaao .el  problema es cuando las cadenas no que  tienen el mismo numero de caracteres, el problema esta  cuando la primera cadena es menor en numero de caracteres que la segunda cadena. solo me devuelve el valor hasta su ultimo valor
por ejemplo: cadena1= a , cadena2=bye , cadena3= ab

no asi cuando es mayor la primera que la segunda ejemplo:
cadena1= bye , cadena2=a , cadena3= baye

aqui esta el programa, agradesco aportes  :good:

Código: Text
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<string.h>
  4. #include<ctype.h>
  5. void llenar_cadena(char cadena[80]);
  6. void mostrar_cadena(char cadena1[80],char cadena2[80],char cadena3[80]);
  7. void main ()
  8. {
  9. char c[80]={0},s[80]={0},f[80]={0};
  10.  
  11. clrscr();
  12. llenar_cadena(c);
  13. llenar_cadena(s);
  14. mostrar_cadena(c,s,f);
  15. getch();
  16. }
  17. void llenar_cadena(char cadena[80])
  18. {
  19. puts("ingrese cadena");
  20. gets(cadena);
  21. }
  22. void mostrar_cadena(char cadena1[80],char cadena2[80],char cadena3[80])
  23. {
  24. int i=0,j,n,subs=1,subc=0;
  25. while(i<=(strlen(cadena1)+strlen(cadena2))){
  26. //cadena2[subc]=cadena[i];
  27. if(cadena1[i]==''){
  28. while(i<=strlen(cadena2)){
  29. cadena3[subs]=cadena2[i];
  30. subs++;
  31. i++; }
  32. printf("la intercalacion es %sn",cadena3);
  33. break;}
  34. cadena3[subc]=cadena1[i];
  35. //cadena2[subs]=cadena1[i];
  36. if(cadena2[i]==''){
  37. while(i<=strlen(cadena1)){
  38. cadena3[subc]=cadena1[i];
  39. subc++;
  40. i++; }
  41. printf("la intercalacion es %sn",cadena3);
  42. break;}
  43. cadena3[subs]=cadena2[i];
  44. subc+=2;
  45. subs+=2;
  46. i+=1;
  47. }
  48. }
  49.  

EL_UNI

  • Nuevo Miembro
  • *
  • Mensajes: 19
  • Nacionalidad: es
    • Ver Perfil
Re: intercalar cadenas
« Respuesta #1 en: Martes 28 de Octubre de 2008, 13:32 »
0
Bueno tengo una pequeña implementación que soluciona tu problema. No entendí muy bien tu código pero supongo que lo que quieres es intercalar dos cadenas y una vez que una de las dos cadenas llegue a su fin, se rellene con lo que queda de la otra. Si es así tengo aquí el código:

Código: C
  1.  
  2. while((cad1[i]!='')&&(cad2[i]!='')){
  3.         cad3[j++]=cad1[i];
  4.         cad3[j++]=cad2[i++];
  5.     }
  6.    
  7.     if(cad1[i]!=''){
  8.         while(cad1[i]!=''){
  9.             cad3[j++] = cad1[i++];
  10.         }
  11.         cad3[j]='';
  12.     }else{
  13.         while(cad2[i]!=''){
  14.             cad3[j++] = cad2[i++];
  15.         }
  16.         cad3[j]='';
  17.     }
  18.    
  19.     printf("La cadena resultante es: %s",cad3);
  20.  
  21.  

Lo va rellenando intercalando los caracteres de una y otra cadena. Luego comprueba si NO ha salido del bucle por causa de la primera cadena y rellena con lo que queda en ella, si es asi es que ha salido por la otra cadena y la rellena con los otros caracteres. Luego muy importante indicar el fin de cadena.
Espero que te haya ayudado.

Un saludo, EL_UNI
Programar es dejar fluir tu imaginación ^^ - EL_UNI