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
Abolición para el torneo del toro de la vega. Death to the murderers of bulls.
Pink escribió:Te quedo super. gracias bro
Gracias crack, un abrazo tio y a ver si hablamos un dia,
Abolición para el torneo del toro de la vega. Death to the murderers of bulls.
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?
RapidShare.de will permanently shut down the servers on 1. March 2010! nein ..
PD:Policia española psicópata
∩____∩
| (• ◡•)|
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
Abolición para el torneo del toro de la vega. Death to the murderers of bulls.
OK3NETu escribió:Buena strup!

Me gustó mucho como te quedo, enhorabuena!

Un Saludo!
Muchas Gracias OK3NETu por tu comentario se agradece, salu2
Abolición para el torneo del toro de la vega. Death to the murderers of bulls.
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
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
Abolición para el torneo del toro de la vega. Death to the murderers of bulls.
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.
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
Abolición para el torneo del toro de la vega. Death to the murderers of bulls.
Responder

Volver a “Fuentes”