SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: cazadorite en Martes 1 de Enero de 2008, 18:51

Título: Como Arreglo Esto
Publicado por: cazadorite en Martes 1 de Enero de 2008, 18:51
hi gente el programa se tiene que ingresar 2 cadenas distintas luego ingreso 1 caracter y si aparecen en las cadenas ese caracter se tiene que borrar weno el problema que tengo que se informa mal x pantalla se muestra las cadenas hasta la letra borrada pero no muestra el final de la cadena creo que es porque al evitar ese caracter queda vacio por x eso necesito una mano para solucionarlo.

Código: Text
  1.  
  2. #include<stdio.h>
  3. #include<conio.h>
  4. #include<string.h>
  5.  
  6. int main (void)
  7. {
  8.  char cad[2][20],l,c;
  9.  char aux[2][20]={0};
  10.  for(int x=0;x<2;x++)
  11.  {
  12.  printf ("Introduce palabra ");
  13.  gets (cad[x]);
  14.  }
  15.  printf ("caracter ");
  16.  scanf("%c",&l);
  17.  
  18.   for(int j=0; j<2; j++)
  19.   {
  20.     for(int k=0; k<strlen(cad[j]); k++)
  21.     {
  22.     c=cad[j][k];
  23.     if(c!=l)
  24.     aux[j][k]=c;
  25.     }
  26.   }
  27.   for(int z=0;z<2;z++)
  28.   printf(" %s \n",aux[z]);
  29.  
  30. return 0;
  31. }
  32.  
  33.  
Título: Re: Como Arreglo Esto
Publicado por: Eternal Idol en Miércoles 2 de Enero de 2008, 14:55
Usa un espacio (' ' o 32) para cuando sea el caracter a borrar o cambia la logica para mostrar caracter a caracter ...
Título: Re: Como Arreglo Esto
Publicado por: Mollense en Miércoles 2 de Enero de 2008, 15:19
Cita de: "cazadorite"
hi gente el programa se tiene que ingresar 2 cadenas distintas luego ingreso 1 caracter y si aparecen en las cadenas ese caracter se tiene que borrar weno el problema que tengo que se informa mal x pantalla se muestra las cadenas hasta la letra borrada pero no muestra el final de la cadena creo que es porque al evitar ese caracter queda vacio por x eso necesito una mano para solucionarlo.

Código: Text
  1.  
  2. #include<stdio.h>
  3. #include<conio.h>
  4. #include<string.h>
  5.  
  6. int main (void)
  7. {
  8.  char cad[2][20],l,c;
  9.  char aux[2][20]={0};
  10.  for(int x=0;x<2;x++)
  11.  {
  12.  printf ("Introduce palabra ");
  13.  gets (cad[x]);
  14.  }
  15.  printf ("caracter ");
  16.  scanf("%c",&l);
  17.  
  18.   for(int j=0; j<2; j++)
  19.   {
  20.     for(int k=0; k<strlen(cad[j]); k++)
  21.     {
  22.     c=cad[j][k];
  23.     if(c!=l)
  24.     aux[j][k]=c;
  25.     }
  26.   }
  27.   for(int z=0;z<2;z++)
  28.   printf(" %s \n",aux[z]);
  29.  
  30. return 0;
  31. }
  32.  
  33.  
Lo que pasa es que estás guardando los caracteres en la posición original de la cadena, y si ya eliminaste, por ejemplo, un caracter deberías guardarlo en una posicion anterior.

Probá así:

<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->    int pos=0;
    for(int k=0; k<strlen(cad[j]); k++)
    {
      c=cad[j][k];
      if(c!=l){
          aux[j][pos]=c;
          pos++;
      }
    }<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->

Un saludo :beer:
Título: Re: Como Arreglo Esto
Publicado por: fORU- en Miércoles 2 de Enero de 2008, 22:53
ok, quieres que tu programa tenga de entrada dos cadenas y un caracter, y que despues si el caracter introducido se encuentra en alguna de las cadenas que se borre el caracter de la cadena. Bueno si es solo eso, solo te puedo recomendar que:


Utilizes strcmp(cad1,caracter), si cad1=caracter te regresara un 0 como resultado

bueno es todo le que puedo decir, ha por cierto si no puedes con matrices intentalo con otra logica sale .