elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  problema con el siguiente codigo [C]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: problema con el siguiente codigo [C]  (Leído 8,624 veces)
SoyelRobert

Desconectado Desconectado

Mensajes: 46



Ver Perfil
problema con el siguiente codigo [C]
« en: 3 Enero 2014, 14:56 pm »

Estoy intentado hacer un programa al cual se le introduce un texto por teclado y que vaya cambiando las vocales por su siguiente vocal:

Si lee una 'a' devuelve una 'e'.

Si lee una u devuelve una 'a'.

No se tienen en cuenta mayusculas ni vocales acentuadas.

Este es el codigo:

Código:
#include <stdio.h>

int esVocal (char c);
char sigVocal (char c);

int main ()
{
char c;
do{
    if(esVocal(c)) sigVocal(c);
    printf("%c", c);
        }while(scanf("%c", &c)!= EOF);

return 0;
}


int esVocal (char c){
if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u') return;
}

char sigVocal (char c){
if(c=='a')c='e';
if(c=='e')c='i';
if(c=='i')c='o';
if(c=='o')c='u';
if(c=='u')c='a';

return c;
}

El problema es que no cambia la vocal:

si la entrada es:

 
Citar
hola que tal

la salida es:

Citar
hola que tal

cuando deberia ser:

Código:
 Hule qui tel

Una vez lo consiga hacer con la entrada por teclado y la salida por monitor el siguiente paso seria hacerlo con ficheros. salu2


« Última modificación: 3 Enero 2014, 14:58 pm por SoyelRobert » En línea

getting louder!
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: problema con el siguiente codigo [C]
« Respuesta #1 en: 3 Enero 2014, 15:26 pm »

Estoy intentado hacer un programa al cual se le introduce un texto por teclado y que vaya cambiando las vocales por su siguiente vocal:

Si lee una 'a' devuelve una 'e'.

Si lee una u devuelve una 'a'.

No se tienen en cuenta mayusculas ni vocales acentuadas.
...................................................................
Una vez lo consiga hacer con la entrada por teclado y la salida por monitor el siguiente paso seria hacerlo con ficheros. salu2

Antes que nada procura indentar o sangrar el código para que sea más legible y elige las etiquetas de C++, aunque el código sea en C. Salen de esa forma coloreado y es más fácil leerlo.

Y en tema pon una breve descripción de lo que buscas, no aclara nada eso de "problema con el siguiente codigo [C]"

Te pongo el código con las correciones que me han parecido y que no se aparten de tu código original. Por cierto,  ya veras cómo salir del bucle.   ;) ;) ;).


Código
  1. #include <stdio.h>
  2.  
  3. int esVocal (char c);
  4. char sigVocal (char c);
  5.  
  6. int main (){
  7.    char c;
  8.    do{
  9.        puts ("Introduzca vocal:");
  10.        scanf("%c",&c);
  11.        while (getchar ()!='\n');
  12.        if(esVocal(c)!=0)
  13.            printf("%c\n", sigVocal(c));
  14.    }while(c!= EOF);
  15.    return 0;
  16. }
  17.  
  18. int esVocal (char c){
  19.    int si_o_no=0;
  20.    if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u')
  21.        si_o_no=1;
  22.    else si_o_no=0;
  23.    return si_o_no;
  24. }
  25.  
  26. char sigVocal (char c){
  27.    if(c=='a')
  28.        c='e';
  29.    else if(c=='e')
  30.        c='i';
  31.    else if(c=='i')
  32.        c='o';
  33.    else if(c=='o')
  34.        c='u';
  35.    else if(c=='u')
  36.        c='a';
  37.    return c;
  38. }
  39.  

¡¡¡¡ Saluditos! ..... !!!!

:rolleyes: ;) ;) ;) :rolleyes:


« Última modificación: 3 Enero 2014, 15:30 pm por leosansan » En línea

SoyelRobert

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: problema con el siguiente codigo [C]
« Respuesta #2 en: 3 Enero 2014, 16:17 pm »

hola leosansan, no se lo que quiere decir indentar un cogido la verdad...

y respecto a lo que has programado, se sale un poco de lo que en un principio buscaba programar, mira:

el asunto era crear un programa en C que al tu introducir un texto cambie todas las vocales que aparezcan por la siguiente vocal que le toque, no se trata de introducir una única vocal para que la modifique sino introducir un texto entero donde aparezcan blancos, saltos de linea, etc (cualquier caracter hasta que se acabe el fichero, EOF)

salu2 y gracias
En línea

getting louder!
joanj94

Desconectado Desconectado

Mensajes: 64



Ver Perfil
Re: problema con el siguiente codigo [C]
« Respuesta #3 en: 3 Enero 2014, 16:28 pm »

Código:
#include <stdio.h>

int esVocal (char c);
char sigVocal (char c);

int main ()
{
char c;
do{
    if(esVocal(c)){
         sigVocal(c);
    }
    printf("%c", c);
    return 0;
}
while(scanf("%c", &c)!= EOF);

int esVocal (char c){
if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u') return;
}

char sigVocal (char c){
if(c=='a')c='e';
if(c=='e')c='i';
if(c=='i')c='o';
if(c=='o')c='u';
if(c=='u')c='a';

return c;
}

Nose si asi funciona, solo meti los claudators al if, porque vamos, a medida que lee las letras queres que si es una vocal la canvie segun la funcion sigVocal. no?
« Última modificación: 3 Enero 2014, 16:31 pm por joanj94 » En línea


SoyelRobert

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: problema con el siguiente codigo [C]
« Respuesta #4 en: 3 Enero 2014, 16:32 pm »

Código:
#include <stdio.h>

int esVocal (char c);
char sigVocal (char c);

int main ()
{
char c;
do{
    if(esVocal(c)){
         sigVocal(c);
    }
    printf("%c", c);
        }while(scanf("%c", &c)!= EOF);

return 0;
}


int esVocal (char c){
if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u') return;
}

char sigVocal (char c){
if(c=='a')c='e';
if(c=='e')c='i';
if(c=='i')c='o';
if(c=='o')c='u';
if(c=='u')c='a';

return c;
}

Nose si asi funciona, solo meti los claudators al if, porque vamos, a medida que lee las letras queres que si es una vocal la canvie segun la funcion sigVocal. no?

si metes el printf dentro del if solo pintara en caso de que c sea una vocal, por lo tanto, no pintria consonantes.
En línea

getting louder!
joanj94

Desconectado Desconectado

Mensajes: 64



Ver Perfil
Re: problema con el siguiente codigo [C]
« Respuesta #5 en: 3 Enero 2014, 16:35 pm »

Código:
Código:
#include <stdio.h>

int esVocal (char c);
char sigVocal (char c);

int main ()
{
char c;
do{
    if(esVocal(c)){
         sigVocal(c);
    }//fin if
    printf("%c", c);
}// fin dentro del do
while(scanf("%c", &c)!= EOF);

return 0;
}//fin main

int esVocal (char c){
if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u') return;
}// fin esVocal

char sigVocal (char c){
if(c=='a')c='e';
if(c=='e')c='i';
if(c=='i')c='o';
if(c=='o')c='u';
if(c=='u')c='a';

return c;
}//fin sigVocal

El printf esta fura del if
En línea


SoyelRobert

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: problema con el siguiente codigo [C]
« Respuesta #6 en: 3 Enero 2014, 16:44 pm »

si perdona me he colado pero nada tampoco sirve , no cambia las vocales la salida es la misma que la entrada al igual que en mi codigo :(
En línea

getting louder!
joanj94

Desconectado Desconectado

Mensajes: 64



Ver Perfil
Re: problema con el siguiente codigo [C]
« Respuesta #7 en: 3 Enero 2014, 16:54 pm »

Por cierto, como termina el supuesto texto? con un . o simplemente termina?
En línea


SoyelRobert

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: problema con el siguiente codigo [C]
« Respuesta #8 en: 3 Enero 2014, 17:08 pm »

Por cierto, como termina el supuesto texto? con un . o simplemente termina?

?? con un EOF (control Z)
En línea

getting louder!
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: problema con el siguiente codigo [C]
« Respuesta #9 en: 3 Enero 2014, 17:09 pm »

Indentar es poner las tabulaciones, vamos poner el código bonito.

Este es tú codigo sin indentar:
Código
  1. #include <stdio.h>
  2.  
  3. int esVocal (char c);
  4. char sigVocal (char c);
  5.  
  6. int main ()
  7. {
  8. char c;
  9. do{
  10.    if(esVocal(c)) sigVocal(c);
  11.    printf("%c", c);
  12.        }while(scanf("%c", &c)!= EOF);
  13.  
  14. return 0;
  15. }
  16.  
  17.  
  18. int esVocal (char c){
  19. if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u') return;
  20. }
  21.  
  22. char sigVocal (char c){
  23. if(c=='a')c='e';
  24. if(c=='e')c='i';
  25. if(c=='i')c='o';
  26. if(c=='o')c='u';
  27. if(c=='u')c='a';
  28.  
  29. return c;
  30. }

Este es el código indentado:

Código
  1. #include <stdio.h>
  2.  
  3. int esVocal (char c);
  4. char sigVocal (char c);
  5.  
  6. int main ()
  7. {
  8.    char c;
  9.    do
  10.    {
  11.        if(esVocal(c)) sigVocal(c);
  12.        printf("%c", c);
  13.    }
  14.    while(scanf("%c", &c)!= EOF);
  15.  
  16.    return 0;
  17. }
  18.  
  19. int esVocal (char c)
  20. {
  21.    if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u') return;
  22. }
  23.  
  24. char sigVocal (char c)
  25. {
  26.    if(c=='a')c='e';
  27.    if(c=='e')c='i';
  28.    if(c=='i')c='o';
  29.    if(c=='o')c='u';
  30.    if(c=='u')c='a';
  31.  
  32.    return c;
  33. }
  34.  

En cuanto al fallo de tú código, scanf lee hasta un espacio o salto de línea. Para leer letra a letra puedes usar getch() de la librería conio.h, decirte que no es estandar pero cumple su propósito.

Otro error que tienes es:

Código
  1. int esVocal (char c)
  2. {
  3.    if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u') return;
  4. }// fin esVocal

No devuelves nada?
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como utilizo el siguiente codigo?
Java
DrUbLiC 5 3,771 Último mensaje 25 Marzo 2008, 23:18 pm
por DrUbLiC
Como inyectar una SHELL por el siguiente codigo PHP
Bugs y Exploits
Jnl 1 4,215 Último mensaje 7 Febrero 2012, 01:38 am
por s00rk
Que hace el siguiente codigo bat?
Scripting
lucas25cba 3 4,007 Último mensaje 26 Septiembre 2012, 06:41 am
por dac
C# me explican el siguiente codigo¿?
.NET (C#, VB.NET, ASP)
andrecid 2 2,015 Último mensaje 11 Agosto 2014, 19:43 pm
por andrecid
¿Que opinan de el siguiente codigo que calcula la edad de una persona?
Programación C/C++
maicol_962016 0 1,567 Último mensaje 20 Febrero 2016, 16:36 pm
por maicol_962016
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines