Título: Morse - ¿donde está mal?
Publicado por: andie13 en 7 Noviembre 2016, 01:16 am
Hola, estaba intentando crear un programa sencillito para traducir un texto a morse. El caso es que no sé que está mal. El código es el siguiente: (Por curiosidad, ¿cómo podría conseguir realizar el mismo algorirmo sin la biblitoeca string.h) #include <stdio.h> #include <stdlib.h> #include <string.h> void cifrarmorse (char frase[], int a){ char letra; switch (letra){ case 'a': break; case 'b': break; case 'c': break; case 'd': break; case 'e': break; case 'f': break; case 'g': break; case 'h': break; case 'i': break; case 'j': break; case 'k': break; case 'l': break; case 'm': break; case 'n': break; case 'o': break; case 'p': break; case 'q': break; case 'r': break; case 's': break; case 't': break; case 'u': break; case 'v': break; case 'w': break; case 'x': break; case 'y': break; case 'z': break; break; break; break; break; break; break; break; break; break; break; break; break; break; break; break; } } int main(int argc, char** argv){ int a; char frase[95]; printf("Introduzca una frase:\n"); cifrarmorse(frase,a); return 0; }
Título: Re: Morse - ¿donde está mal?
Publicado por: engel lex en 7 Noviembre 2016, 02:44 am
No le asignas ningún valor a letra, en algún momento tienes que asignar un valo
Título: Re: Morse - ¿donde está mal?
Publicado por: GGZ en 7 Noviembre 2016, 08:31 am
¿Esto es lo que estás buscando? Fijate, ahí hice algunos arreglos, y funciona. Gets se dejó de usar hace tiempo, mejor usa scanf. EDITO: scanf lee la entrada hasta el primer espacio, entonces no deberías usar scanf tampoco. Creo que fgets o alguna función de esas, eso te dejo que lo investigues vos. #include <stdio.h> #include <stdlib.h> #include <string.h> void cifrarmorse (char frase){ switch (frase){ case 'a': break; case 'b': break; case 'c': break; case 'd': break; case 'e': break; case 'f': break; case 'g': break; case 'h': break; case 'i': break; case 'j': break; case 'k': break; case 'l': break; case 'm': break; case 'n': break; case 'o': break; case 'p': break; case 'q': break; case 'r': break; case 's': break; case 't': break; case 'u': break; case 'v': break; case 'w': break; case 'x': break; case 'y': break; case 'z': break; break; break; break; break; break; break; break; break; break; break; break; break; break; break; break; } } int main(int argc, char** argv){ int a; char frase[95]; printf("Introduzca una frase:\n"); int i; for (i=0; i<a; i++) cifrarmorse(frase[i]); // Agregamos salto de linea al final. return 0; }
OUTPUT: Introduzca una frase: HOLA ···· --- ·-·· ·- Usá fgets te dejo como: fgets (frase,sizeof(frase),stdin);Deberías cambiarlo en el código que te pasé porque como te dije arriba scanf solo toma hasta el primer espacio. Si pones "Hola" o "Hola Mundo" el programa con scanf solo toma Hola. ¡Saludos!
Título: Re: Morse - ¿donde está mal?
Publicado por: MAFUS en 7 Noviembre 2016, 12:50 pm
Para el problema de scanf: scanf("%95[^\n]", frase );
Título: Re: Morse - ¿donde está mal?
Publicado por: andie13 en 7 Noviembre 2016, 21:17 pm
Muchas gracias a todos por responder :D. Aún estoy empezando a programar y me cuesta un poquito pulir los conceptos. He seguido vuestros consejos y funcionan todos correctamente, así que muchísimas gracias por vuestro tiempo.
¡Hasta otra!
|