Foros del Web » Programación para mayores de 30 ;) » C/C++ »

ayuda con kitar vocales en cadena

Estas en el tema de ayuda con kitar vocales en cadena en el foro de C/C++ en Foros del Web. hola chic@s , veran el codigo es el siguiente: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C: Ver original /*16.   Introducir por teclado una cadena de 50 caracteres ...
  #1 (permalink)  
Antiguo 10/04/2010, 05:28
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 8 meses
Puntos: 2
Pregunta ayuda con kitar vocales en cadena

hola chic@s ,

veran el codigo es el siguiente:
Código C:
Ver original
  1. /*16.   Introducir por teclado una cadena de 50 caracteres útiles como máximo.
  2. A continuación copiar la cadena en otra de igual longitud, eliminando previamente
  3.  todas las vocales y finalmente visualizar las dos cadenas. */
  4.  
  5.  #include<stdio.h>
  6.  #include<string.h>
  7.  #include<stdlib.h>
  8.  #include<ctype.h>
  9.  
  10.  int main(){
  11.  
  12.  char cad[51],cad2[51];
  13.  
  14.  int i=0,loncad=0;
  15.  do{
  16.  printf("introduce una cadena de max 50 caracteres:\n");
  17.  gets(cad);
  18.  loncad=strlen(cad);
  19.  if(loncad>50){
  20.  printf("Excedes los 50 caracteres:\n");
  21.  }
  22.  }while(loncad>50);
  23.  
  24.  
  25.  for(i=0;i<51 && cad[i]!='\0';i++){
  26.           switch(tolower(cad[i])){
  27.               case 'a': cad[i]=' ';
  28.                              break;
  29.               case 'e': cad[i]=' ';
  30.                              break;
  31.               case 'i': cad[i]=' ';
  32.                             break;
  33.                 case 'o': cad[i]=' ';
  34.                             break;
  35.                 case 'u': cad[i]=' ';
  36.                            
  37.  
  38.  
  39.               default:
  40.               cad2[i]=cad[i];
  41.  
  42.               break;
  43.  
  44.              }
  45.  
  46.  
  47.  
  48. }
  49. printf("la primera cadena es %s:\n",cad);
  50.  
  51. printf("\n la segunda cadena es %s:\n",cad2);
  52.  
  53.   return 0;
  54.  }
Al ejecutar me visualiza la primera cadena sin vocales pero la segunda me muestra cosas raras imagino que los valores ASCIi.Que hago mal?
  #2 (permalink)  
Antiguo 10/04/2010, 05:48
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 5 meses
Puntos: 61
Respuesta: ayuda con kitar vocales en cadena

A cad2 le falta el fin de string ('\0')
  #3 (permalink)  
Antiguo 10/04/2010, 09:12
aguirremanuel
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ayuda con kitar vocales en cadena

Aqui tienes unas modificaciones mi pana :

Código C++:
Ver original
  1. /*16.   Introducir por teclado una cadena de 50 caracteres útiles como máximo.
  2. A continuación copiar la cadena en otra de igual longitud, eliminando previamente
  3.  todas las vocales y finalmente visualizar las dos cadenas. */
  4.  
  5.  #include<stdio.h>
  6.  #include<string.h>
  7.  #include<stdlib.h>
  8.  #include<ctype.h>
  9.  
  10.  int main()
  11.  {
  12.     char cad[51],cad2[51];
  13.     int i=0,loncad=0;
  14.     do
  15.     {
  16.         printf("introduce una cadena de max 50 caracteres:\n");
  17.         gets(cad);
  18.         loncad = strlen(cad);
  19.         if(loncad>50)
  20.         {
  21.             printf("Excedes los 50 caracteres:\n");
  22.         }
  23.     }while(loncad>50);
  24.     for( i = 0 ; i < loncad ; i++ )
  25.     {
  26.         cad2[i]=cad[i];
  27.         switch(tolower(cad[i]))
  28.         {
  29.             case 'a':
  30.             case 'e':
  31.             case 'i':
  32.             case 'o':
  33.             case 'u': cad2[i]='_';
  34.         }
  35.     }
  36.     cad2[i]='\0';    //colocamos el indicador del final de la cadena
  37.     printf("\n la primera cadena es : %s\n",cad);
  38.     printf("\n la segunda cadena es : %s\n",cad2);
  39.     return 0;
  40.  }

Suerte...!!!
  #4 (permalink)  
Antiguo 10/04/2010, 11:38
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: ayuda con kitar vocales en cadena

HOla chicos muchas gracias por todo ,modificando en mi codigo solo lo de despues de los buqules el cad2[i]='\0' y corrigiendo que estaba poniendo en las vocales de cad[i] los espacios en lugar de en cad2[i] (erroraso xD).Sale estupendamente.
lo de tu switch esta super corto,me gusta pense ke siempre habia que poner un default y los break para cada case pero tu no los pones compi,mm,imagino que sera porque como hay que realizar la misma operacion para las 5 vocales..

sEguire practicando con las cadenas ,besos

Etiquetas: cadenas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:38.