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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Morse - ¿donde está mal?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Morse - ¿donde está mal?  (Leído 2,786 veces)
andie13

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Morse - ¿donde está mal?
« 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 biblitoecastring.h)
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. void cifrarmorse (char frase[], int a){    
  6.    char letra;
  7.  
  8.    switch (letra){
  9.        case 'a':
  10.        case 'A': printf("·- ");
  11.            break;
  12.        case 'b':
  13.        case 'B': printf("-··· ");
  14.            break;
  15.        case 'c':
  16.        case 'C': printf("-·-·" );
  17.            break;
  18.        case 'd':
  19.        case 'D': printf("-·· ");
  20.            break;
  21.        case 'e':
  22.        case 'E': printf("· ");
  23.            break;
  24.        case 'f':
  25.        case 'F': printf("··-· ");
  26.            break;
  27.        case 'g':
  28.        case 'G': printf("--· ");
  29.            break;
  30.        case 'h':
  31.        case 'H': printf("···· ");
  32.            break;
  33.        case 'i':
  34.        case 'I': printf("·· ");
  35.            break;
  36.        case 'j':
  37.        case 'J': printf("·--- ");
  38.            break;
  39.        case 'k':
  40.        case 'K': printf("-·- ");
  41.            break;
  42.        case 'l':
  43.        case 'L': printf("·-·· ");
  44.            break;
  45.        case 'm':
  46.        case 'M': printf("-- ");
  47.            break;
  48.        case 'n':
  49.        case 'N': printf("-· ");
  50.            break;
  51.        case 'o':
  52.        case 'O': printf("--- ");
  53.            break;
  54.        case 'p':
  55.        case 'P': printf("·--· ");
  56.            break;
  57.        case 'q':
  58.        case 'Q': printf("--·- ");
  59.            break;
  60.        case 'r':
  61.        case 'R': printf("·-· ");
  62.            break;
  63.        case 's':
  64.        case 'S': printf("··· ");
  65.            break;
  66.        case 't':
  67.        case 'T': printf("- ");
  68.            break;
  69.        case 'u':
  70.        case 'U': printf("··- ");
  71.            break;
  72.        case 'v':
  73.        case 'V': printf("···- ");
  74.            break;
  75.        case 'w':
  76.        case 'W': printf("·-- ");
  77.            break;
  78.        case 'x':
  79.        case 'X': printf("-··- ");
  80.            break;
  81.        case 'y':
  82.        case 'Y': printf("-·-- ");
  83.            break;
  84.        case 'z':
  85.        case 'Z': printf("--·· ");
  86.            break;
  87.        case '0': printf("----- ");
  88.            break;
  89.        case '1': printf("·---- ");
  90.            break;
  91.        case '2': printf("··--- ");
  92.            break;
  93.        case '3': printf("···-- ");
  94.            break;
  95.        case '4': printf("····- ");
  96.            break;
  97.        case '5': printf("····· ");
  98.            break;
  99.        case '6': printf("-···· ");
  100.            break;
  101.        case '7': printf("--··· ");
  102.            break;
  103.        case '8': printf("---·· ");
  104.            break;
  105.        case '9': printf("----· ");
  106.            break;
  107.        case '.': printf("·-·-·- ");
  108.            break;
  109.        case ',': printf("--··-- ");
  110.            break;
  111.        case '?': printf("··--·· ");
  112.            break;
  113.        case '"': printf("·-··-· ");
  114.            break;
  115.        case ' ': printf("   ");
  116.            break;
  117.    }        
  118. }
  119.  
  120. int main(int argc, char** argv){
  121.    int a;
  122.    char frase[95];
  123.    printf("Introduzca una frase:\n");
  124.    gets(frase);
  125.    a=strlen(frase);
  126.    cifrarmorse(frase,a);
  127.  
  128.    return 0;
  129. }
  130.  
  131.  


« Última modificación: 7 Noviembre 2016, 02:45 am por engel lex » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Morse - ¿donde está mal?
« Respuesta #1 en: 7 Noviembre 2016, 02:44 am »

No le asignas ningún valor a letra, en algún momento tienes que asignar un valo


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
GGZ

Desconectado Desconectado

Mensajes: 144



Ver Perfil
Re: Morse - ¿donde está mal?
« Respuesta #2 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.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. void cifrarmorse (char frase){
  6.  
  7.    switch (frase){
  8.        case 'a':
  9.        case 'A': printf("·- ");
  10.            break;
  11.        case 'b':
  12.        case 'B': printf("-··· ");
  13.            break;
  14.        case 'c':
  15.        case 'C': printf("-·-·" );
  16.            break;
  17.        case 'd':
  18.        case 'D': printf("-·· ");
  19.            break;
  20.        case 'e':
  21.        case 'E': printf("· ");
  22.            break;
  23.        case 'f':
  24.        case 'F': printf("··-· ");
  25.            break;
  26.        case 'g':
  27.        case 'G': printf("--· ");
  28.            break;
  29.        case 'h':
  30.        case 'H': printf("···· ");
  31.            break;
  32.        case 'i':
  33.        case 'I': printf("·· ");
  34.            break;
  35.        case 'j':
  36.        case 'J': printf("·--- ");
  37.            break;
  38.        case 'k':
  39.        case 'K': printf("-·- ");
  40.            break;
  41.        case 'l':
  42.        case 'L': printf("·-·· ");
  43.            break;
  44.        case 'm':
  45.        case 'M': printf("-- ");
  46.            break;
  47.        case 'n':
  48.        case 'N': printf("-· ");
  49.            break;
  50.        case 'o':
  51.        case 'O': printf("--- ");
  52.            break;
  53.        case 'p':
  54.        case 'P': printf("·--· ");
  55.            break;
  56.        case 'q':
  57.        case 'Q': printf("--·- ");
  58.            break;
  59.        case 'r':
  60.        case 'R': printf("·-· ");
  61.            break;
  62.        case 's':
  63.        case 'S': printf("··· ");
  64.            break;
  65.        case 't':
  66.        case 'T': printf("- ");
  67.            break;
  68.        case 'u':
  69.        case 'U': printf("··- ");
  70.            break;
  71.        case 'v':
  72.        case 'V': printf("···- ");
  73.            break;
  74.        case 'w':
  75.        case 'W': printf("·-- ");
  76.            break;
  77.        case 'x':
  78.        case 'X': printf("-··- ");
  79.            break;
  80.        case 'y':
  81.        case 'Y': printf("-·-- ");
  82.            break;
  83.        case 'z':
  84.        case 'Z': printf("--·· ");
  85.            break;
  86.        case '0': printf("----- ");
  87.            break;
  88.        case '1': printf("·---- ");
  89.            break;
  90.        case '2': printf("··--- ");
  91.            break;
  92.        case '3': printf("···-- ");
  93.            break;
  94.        case '4': printf("····- ");
  95.            break;
  96.        case '5': printf("····· ");
  97.            break;
  98.        case '6': printf("-···· ");
  99.            break;
  100.        case '7': printf("--··· ");
  101.            break;
  102.        case '8': printf("---·· ");
  103.            break;
  104.        case '9': printf("----· ");
  105.            break;
  106.        case '.': printf("·-·-·- ");
  107.            break;
  108.        case ',': printf("--··-- ");
  109.            break;
  110.        case '?': printf("··--·· ");
  111.            break;
  112.        case '"': printf("·-··-· ");
  113.            break;
  114.        case ' ': printf("   ");
  115.            break;
  116.    }        
  117. }
  118.  
  119. int main(int argc, char** argv){
  120.    int a;
  121.    char frase[95];
  122.    printf("Introduzca una frase:\n");
  123.    scanf ("%s",frase);
  124.    a=strlen(frase);
  125.  
  126.    int i;
  127.  
  128.    for (i=0; i<a; i++)
  129.    cifrarmorse(frase[i]);
  130.  
  131.  
  132.    // Agregamos salto de linea al final.
  133.    printf ("\n");
  134.  
  135.    return 0;
  136. }

OUTPUT:
Código:
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!
« Última modificación: 7 Noviembre 2016, 08:55 am por GGZ » En línea

LET'S DO STUFF!!
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Morse - ¿donde está mal?
« Respuesta #3 en: 7 Noviembre 2016, 12:50 pm »

Para el problema de scanf:
Código
  1. scanf("%95[^\n]", frase);
En línea

andie13

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re: Morse - ¿donde está mal?
« Respuesta #4 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!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Traductor morse en batch
Scripting
Sr.Origami 5 4,343 Último mensaje 15 Junio 2010, 13:18 pm
por Sr.Origami
Dónde se supone que está el enlace de descarga de esta app para Ubuntu
GNU/Linux
okik 8 4,359 Último mensaje 1 Julio 2015, 18:13 pm
por Gh057
¿Has perdido tu móvil Android? Esta web te dice dónde está y te ayuda a ...
Noticias
wolfbcn 0 1,887 Último mensaje 16 Abril 2016, 02:42 am
por wolfbcn
como aprendo codigo morse?
Dudas Generales
vestra 2 2,282 Último mensaje 26 Junio 2019, 17:38 pm
por animanegra
código morse es urgente
Programación C/C++
jpp97 1 2,415 Último mensaje 14 Febrero 2020, 01:49 am
por codX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines