C/Visual C - VOCALES

 
Vista:

VOCALES

Publicado por ISAIAS DUQUE GOMEZ (46 intervenciones) el 31/03/2006 05:34:37
alguien que me peuda ayudar:
alguien que me explicque que toy haciendo mal:

/*Capturar una linea de texto con un maximo de 80 caracteres.
contar y mostrar el numero de vocales que contiene.Manejar todo
con punteros a excepcion de la cadena original.
*/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include<conio.h>

void main()
{
char cadena[80],*ptr,*voc;
int x=0,i=0,v=0;
clrscr();
printf("\nintroduce un cadena: ");
gets(cadena);
ptr=cadena; //inicializamos puntero
voc=cadena;
x=strlen(cadena);
while(x>0)
{
if(toupper(*ptr)=='A' || toupper(*ptr)=='E' ||toupper(*ptr)=='I' ||toupper(*ptr)=='O' ||toupper(*ptr)=='U')
{
*voc=*(ptr+x-1);
*voc++;
*ptr++;
v++;
}
else
{
*ptr++;
}
x--;
}
printf("\ncantidad de vocales son : %d",v);
printf("\nla cadena de vocales es : %s",voc);
getch();
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:VOCALES

Publicado por Nelek (816 intervenciones) el 31/03/2006 08:48:12
mmm, a mi me parece correcto lo que estas haciendo, excepto por una cosa... aunque posiblemente no sea eso... cuando asignas la cadena a los punteros, no tienes los asteriscos.

Y luego estas asignando la cadena al puntero *voc, y luego le vuelves a añadir letras y aumentando la direccion en el if. Si ahi dentro lo que quieres tener es la cadena de vocales... no deberias tenerla vacia para ir metiendo las vocales desde el otro puntero?

Tambien he de decir, que no osy ningun experto y seguramente lo que yo haya dicho no sirva, pero... por probar.

Con un poco de paciencia alguno de los buenos te contestara.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:VOCALES

Publicado por evth_sux (14 intervenciones) el 31/03/2006 11:53:19
Uno de los errores es que no finalizas el puntero *voc cuando se acaba de contar, por lo que rellenaba el resto de la cadena con lo que tenía desde la inicialización del puntero.

No sé si te servirá esto:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include<conio.h>

void main()
{
char cadena[80],*ptr,*voc;
int x=0,i=0,v=0;
system("clrscr");
printf("\nintroduce un cadena: ");
gets(cadena);
ptr=cadena; //inicializamos puntero
voc=cadena;
x=strlen(cadena);

for (i = 0; i <= x; i++)
{
if(toupper(*(ptr+i))=='A' || toupper(*(ptr+i))=='E' || toupper(*(ptr+i))=='I'
||toupper (*(ptr+i))=='O' || toupper(*(ptr+i))=='U')
{
*(voc+v)=*(ptr+i);
v++;
}
else
{
}
}
*(voc+v)=0;

printf("\ncantidad de vocales son : %d",v);
printf("\nla cadena de vocales es : %s",voc);
getch();
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar