Autor
|
Tema: eliminar vocales (Leído 12,457 veces)
|
ALONSOQ
Desconectado
Mensajes: 62
|
Hola estoy haciendo un programa que invierta una cadena y elimie las vocales. La primera parte la tengo controlada, pero a la hora de eliminar vocales no consigo eliminar todas, ¿ podeis echarme un cable, por favor? #include <stdio.h> #include <stdlib.h> #include <string.h> void invertir (char p[]); main() { char palabra[80]; invertir (palabra); } void invertir (char p []) { int i,j; for(i=0;i<=j;i++) { if (p[i]=='a' || p[i]=='e' || p[i]=='i' ||p[i]=='o'||p[i]=='u') { p[i]=' '; } } }
|
|
|
En línea
|
|
|
|
DickGumshoe
|
¡Hola! Primero debes invertir la palabra, puesto que, si por ejemplo, pones "hola" y dices: i = 0 ---> si p[i] es una vocal, se convierte en un espacio --> imprimes p[j-i-1], o lo que es lo mismo, p[3], que es una letra que todavía no has eliminado, siendo una vocal.
Entonces, queda así: void invertir (char p []) { int i,j; for(i=j-1; i >=0 ;i--) { if (p[i]=='a' || p[i]=='e' || p[i]=='i' ||p[i]=='o'||p[i]=='u') { p[i] = ' '; } } }
Un saludo.
|
|
« Última modificación: 6 Septiembre 2012, 17:39 pm por DickGumshoe »
|
En línea
|
|
|
|
avesudra
Desconectado
Mensajes: 724
Intentando ser mejor cada día :)
|
Hola ALONSOQ , te has liado un poco , y yo también me lío con tu código así que he optado porque elimine las vocales primero, y imprima la cadena desde atrás hacia adelante , es más facil mira: void invertir (char p []) { int i; int largo =strlen(p )-1;// La posición [0] es una letra , por eso el menos 1 lo que haría sería poner el caracter nulo primero. for(i=0; i<=largo; i++)//mientras que i sea menor o igual que largo elimina las vocales. { if (p[i]=='a' || p[i]=='e' || p[i]=='i' ||p[i]=='o'||p[i]=='u') { p[i]=' '; } } for(i = largo; i >= 0; --i)//i es igual al largo(apunta a la ultima letra) , mientras i sea mayor o igual que 0 imprime desde atrás. { } }
EDITO: DickGumShoe te lo ha aclarado mejor , que el ha entendido lo que querías hacer con las letras i y j.
|
|
« Última modificación: 6 Septiembre 2012, 17:57 pm por avesudra »
|
En línea
|
Regístrate en
|
|
|
DickGumshoe
|
Avesudra, una pequeña anotación, AlonsoQ está estudiando C, y si no recuerdo mal no se pueden declarar las variables justo cuando la vas a usar, debe ser al principio de la función (en C++ sí que se puede).
Un saludo.
|
|
|
En línea
|
|
|
|
avesudra
Desconectado
Mensajes: 724
Intentando ser mejor cada día :)
|
Avesudra, una pequeña anotación, AlonsoQ está estudiando C, y si no recuerdo mal no se pueden declarar las variables justo cuando la vas a usar, debe ser al principio de la función (en C++ sí que se puede).
Un saludo.
Ummm entiendo entiendo ya no se lo digo más , perdón ALONSOQ, gracias por la aclaración Dick
|
|
« Última modificación: 6 Septiembre 2012, 17:58 pm por avesudra »
|
En línea
|
Regístrate en
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
Hola estoy haciendo un programa que invierta una cadena y elimie las vocales. Lo primero que debes aclarar es a que te refieres con eliminar las vocales ya que en tu programa solo las sustituyes por un espacio. Si la idea es no imprimirlas una forma es, utilizando la función "strchr" (prototipo en <string.h>): void invertir(char cad[]) { size_t i; while (i > 0) if (strchr("AEIOUaeiou", cad [--i ]) == NULL ) }
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
Avesudra, una pequeña anotación, AlonsoQ está estudiando C, y si no recuerdo mal no se pueden declarar las variables justo cuando la vas a usar, debe ser al principio de la función (en C++ sí que se puede).
Un saludo.
En C99 si se puede hacer eso... Dulces Lunas!¡.
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Python] Vocales y carácteres
« 1 2 »
Scripting
|
Meta
|
12
|
13,950
|
29 Julio 2014, 21:26 pm
por Eleкtro
|
|
|
Representación hexadecimal de las vocales con acento
Programación C/C++
|
cesariox23
|
3
|
5,431
|
29 Junio 2014, 07:19 am
por cesariox23
|
|
|
Cambiar vocales a 2 cadenas
Programación C/C++
|
dark_link00
|
1
|
2,234
|
8 Junio 2014, 16:40 pm
por rir3760
|
|
|
Como pasar a mayuscula vocales acentuadas ?
Programación C/C++
|
jesus++
|
9
|
4,905
|
16 Julio 2014, 21:38 pm
por Miseryk
|
|
|
Eliminar vocales C++
Programación C/C++
|
bryanrz96
|
1
|
2,765
|
30 Octubre 2015, 14:33 pm
por class_OpenGL
|
|