Página 1 de 1

[C] Funcion Morse

Publicado: 09 Dic 2013, 15:17
por strup
Bueno me aburria y despues de hacerla en php codee esta funcion de cifrado y descifrado morse en C, para ir atinando mas las practicas que llevo a cavo con este lenguaje, bueno aqui e lcode.
/*
  Name: Funcion Morse
  Author: Strup
  Date: 09/12/13 14:14
  Description: Cifrar un texto a morse y descifrarlo.
*/
#include <stdio.h>
#include <stdlib.h>
  void cifrar(char *string,long *cifrado);
  char *descifrar(long *cadena);
  int i;char *texto;
  int main()
  {
  	texto=(char*)malloc(1000*sizeof(char));
  	gets(texto);long str[strlen(texto)];
  	cifrar(texto,str);
  	for(i=0;i<strlen(texto);i++)
  	{
  		printf("%s",str[i]);
  	}
  	puts("");
  	printf("%s\n",descifrar(str));
  	system("PAUSE");
  	return 0;
  }
  void cifrar(char *string,long *cifrado)
  {
  	int x,y;
  	char *puntero_texto="abcdefghijklmnopqrstuvwxyz0123456789.,?-!:;()=$@_+~# '",*puntero_texto_uper="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,?-!:;()=$@_+~# '";
  	char *morse[]={".- ", "-... ", "-.-. ", "-.. ", ". ","..-. ", "--. ", ".... ", ".. ", ".--- ", "-.- ", ".-.. ", "-- ", "-. ", "--- ", ".--. ", "--.- ", ".-. ", "... ", "- ", "..- ", "...- ",".-- ", "-..- ", "-.-- ", "--.. ", "----- ",".---- ", "..--- ", "...-- ", "....- ", "..... ", "-.... ", "--... ","---.. ", "----. ", ".-.-.- ", "--..-- ", "..--.. ", "-....- ", "-.-.-- ", "---... ", "-.-.-. ", "-.--. ", "-.--.- ", "-...- ", "...-..- ", ".--.-. ","..--.- ", ".-.-. ", ".-... ", "...-.- ", "/ ", ".----. "};
  	for(x=0;x<=strlen(string);x++)
  	{
  		for(y=0;y<=54;y++)
  		{
  			if(string[x] == puntero_texto[y] || string[x] == puntero_texto_uper[y])
  			{
  				cifrado[x]=morse[y];
  			}
  		}
  	}
  }
  char *descifrar(long *cadena)
  {
  	char *morse[]={".- ", "-... ", "-.-. ", "-.. ", ". ","..-. ", "--. ", ".... ", ".. ", ".--- ", "-.- ", ".-.. ", "-- ", "-. ", "--- ", ".--. ", "--.- ", ".-. ", "... ", "- ", "..- ", "...- ",".-- ", "-..- ", "-.-- ", "--.. ", "----- ",".---- ", "..--- ", "...-- ", "....- ", "..... ", "-.... ", "--... ","---.. ", "----. ", ".-.-.- ", "--..-- ", "..--.. ", "-....- ", "-.-.-- ", "---... ", "-.-.-. ", "-.--. ", "-.--.- ", "-...- ", "...-..- ", ".--.-. ","..--.- ", ".-.-. ", ".-... ", "...-.- ", "/ ", ".----. "};
  	char *matriz[]={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","0","1","2","3","4","5","6","7","8","9",".",",","?","-","!",":",";","(",")","=","$","@","_","+","~","#"," ","'"};
  	int x,y;
  	char descifrado[500]="";
  	for (x=0;x<=sizeof(cadena)*500;x++)
  	{
  		for(y=0;y<=54;y++)
  		{
  			if(cadena[x] == morse[y])
  			{
  				strcat(descifrado,matriz[y]);
  			}
  		}
  	}
  	return descifrado;
  }
una toma de su funcionamiento espero os guste el code, cualquier cosa avisan un saludo

Re: [C] Funcion Morse

Publicado: 09 Dic 2013, 18:38
por Pink
Te quedo super. gracias bro

Re: [C] Funcion Morse

Publicado: 09 Dic 2013, 20:23
por strup
Pink escribió:Te quedo super. gracias bro
Gracias crack, un abrazo tio y a ver si hablamos un dia,

Re: [C] Funcion Morse

Publicado: 15 Ene 2014, 20:56
por valium7
Qué bueno , en internet seguro que a alguien le sirve, tu no usas getch , usas la stdlib , eres de los míos xD
¿cómo pones para que se vea la sintaxis?

Re: [C] Funcion Morse

Publicado: 15 Ene 2014, 21:40
por strup
Hola valium7, cuando vayas a poner el code le das a
select a Syntax
y elijes el lenguaje en el cual vas a poner su code,
stdlib la uso para casi cualquier funcion y la stdio es logico para la entrada y salida de datos y muchas otras funciones del lenguaje
con getch solo cogeriamos un caracter a si que si vamos a descifrar una cadena es mejor usar gets()
salu2

Re: [C] Funcion Morse

Publicado: 16 Ene 2014, 16:25
por OK3NETu
Buena strup!

Me gustó mucho como te quedo, enhorabuena!

Un Saludo!

Re: [C] Funcion Morse

Publicado: 16 Ene 2014, 20:03
por strup
OK3NETu escribió:Buena strup!

Me gustó mucho como te quedo, enhorabuena!

Un Saludo!
Muchas Gracias OK3NETu por tu comentario se agradece, salu2

Re: [C] Funcion Morse

Publicado: 16 Ene 2014, 22:48
por NvK
Excelente strup! solo un pequeño consejo.
En lugar de usar:
char *matriz[]={"A","B","C"....
Puedes hacerlo así
char matriz[]={'A','B','C'....
Ya que son caracteres, no necesitas el puntero extra, también intenta no utilizar strcat usa sprintf
Saludos

Re: [C] Funcion Morse

Publicado: 16 Ene 2014, 23:38
por strup
NvK escribió:Excelente strup! solo un pequeño consejo.
En lugar de usar:
char *matriz[]={"A","B","C"....
Puedes hacerlo así
char matriz[]={'A','B','C'....
Ya que son caracteres, no necesitas el puntero extra, también intenta no utilizar strcat usa sprintf
Saludos
Gracias por el consejo NvK no sabia que se pudiera hacer a si tambien como lo que queria era hacer un array de punteros para comparar cada uno lo hice con
el signo de indireccion precedido que es como se le dice al compilador que eso es un puntero y como normalmente estoy acostumbrado.
lo de sprintf no llegue todavia a estudiarlo cuando hice la funcion a si que para la proxima te tomo el consejo
gracias crack es bueno tomar consejos de alguien avanzado como tu, salu2

Re: [C] Funcion Morse

Publicado: 17 Ene 2014, 00:01
por NvK
Con lo del puntero extra me refería a que no necesitas declarar un array de punteros si solo usaras caracteres.
Por lo de strcat es por los desbordamientos de memoria(y más), ya que si no se encuentra un terminador de cadena '\0'
seguirá copiando el buffer indefinidamente, lo que podría llevar a consecuencias catastróficas de código.
Por seguridad usa mejor sprintf o strcat_s.

Re: [C] Funcion Morse

Publicado: 17 Ene 2014, 00:36
por strup
NvK escribió:Con lo del puntero extra me refería a que no necesitas declarar un array de punteros si solo usaras caracteres.
si, si por eso te dije que eso lo hice ya por costumbre, por lo que me dijiste enseguida supe que es "opcional"
NvK escribió:Por lo de strcat es por los desbordamientos de memoria(y más), ya que si no se encuentra un terminador de cadena '\0'
seguirá copiando el buffer indefinidamente, lo que podría llevar a consecuencias catastróficas de código.
Por seguridad usa mejor sprintf o strcat_s.
si, tenia constancia de ello la funcion seguira buscando asta encontrar el caracter nulo mientras no lo encuentre seguira buscando asta encontrarlo.
pero como vi que funcionaba lo deje con strcat sin haber conocido antes el sprintf jajaja, salu2 maquina