Librería de Snippets en C/C++

Iniciado por z3nth10n, 22 Julio 2013, 19:48 PM

0 Miembros y 2 Visitantes están viendo este tema.

αиσиyмσυรCร

Haber si le ponen chincheta al tema :P no estaría de mas :D

z3nth10n

Tampoco estaría mal que participaseis xD ;)

Interesados hablad por Discord.

αиσиyмσυรCร

Cita de: Ikillnukes en 26 Julio 2013, 13:30 PM
Tampoco estaría mal que participaseis xD ;)

Colabora tu tambien que para eso lo iniciastes ZAS EN TODA LA BOCA jajajajaja

Y segun electro colaboramos mas que los de .NET asique que se note :D y yo ya aporte 2 webs una que no vi si tenia snipets Hawee y la otra que detallo muy bien Stakewinner00 :D de la web que pase :P y bueno poco a poco se llenara solo es cuestion de tiempo y que vean el tema la gente que le pueda interesar entre ellos gente que se dedica a hacer retos como los del snake :P jajajaja yo colabore buscando en google un poco ya que yo estoy aprendiendo C++ y no se que puede ser snippet y que no... Y bueno intento ayudar a una causa que me interesa y me sera de ayuda en un futuro cuando aprenda y domine el lenguje C/C++ :D

Un saludo

z3nth10n

Yo participaría pero ahora estoy liado con cosillas del .NET :P

Interesados hablad por Discord.

Stakewinner00

#14
Cuelgo algunos códigos de ROT13 y ROT47
Código (cpp) [Seleccionar]
#include <string>

string rot13(string s)
{
string ct;
for(int i=0;i<s.size();i++)
{
if (s[i] >= 'a' && s[i] < 'n' ||  s[i]>='A' && s[i] < 'N')
{
ct += s[i] + 13;
} else if (s[i] >= 'n'  || s[i] >= 'N')
{
ct += s[i] - 13;
} else
{
ct += s[i];
}
}
return ct;
}

string rot47(string s)
{
string ct;
for(int i=0;i<s.size();i++)
{
if (s[i] >= '!' && s[i] < 'O')
{
if (s[i]+47==' ')
s[i]='_'-47;

ct += s[i] + 47;
} else if (s[i] >= 'O')
{
if (s[i]-47==' ')
s[i]='_'+47;

ct += s[i] - 47;
} else
{
ct += s[i];
}
}
return ct;
}

Stakewinner00

#15
Cita de: Ikillnukes en 26 Julio 2013, 15:21 PM
Añadido a la lista. ::)

TE lo has currado bastante para decir algo tan sencillo jaja.
Luego si consigo acabar lo que estoy haciendo edito el mensaje y pongo otro encriptador cifrado distinto. De momento tengo problemas con matrices.

ivancea96

Función que devuelve true si un numero es primo :p

Quizás se pueda optimizar más, pero weno jeje

Código (cpp) [Seleccionar]

bool primo(unsigned int u){
unsigned int i=0;
if(u<2) return FALSE;   //Comprobar si es 1
for (i=2; u%i!=0; i+=2) {if(i>u/2){ i=u; break;}}  //Rompera cuando se encuentre un divisor, o el 'i' sea mayor que la mitad de el numero (para ahorrar tiempo)
if (u == i) return TRUE; //Si el divisor encontrado es el mismo numero, es primo
else return FALSE; //Sino, no lo es
}

Stakewinner00

#17
Aquí añado uno basado en El cifrado de Polybios. Más que nada me lo tome como un reto por que aun nunca había usado matrices y bueno, la matriz tiene algunos defectos pero el algoritmo es funcional.

Código (cpp) [Seleccionar]
#include <string>

using std::string;

string polybios_encrypt(string);
string polybios_decrypt(string);
void generar_matriz();

char matriz[9][10];
void generar_matriz()
{
matriz[0][0]='0';
for(short i=1;i<=10;i++)
{
matriz[0][i]='@'+i;
}
for(short i=1;i<=9;i++)
{
matriz[i][0]='@'+i;
}
short temp=0;
for(short j=1;j<9;j++)
{
for(short i=1;i<10;i++)
{
if ('a'+temp <= 'z')
{
matriz[j][i] = 'a' + temp;
} else {
matriz[j][i] = 'a' + temp - 75;
}
temp++;
}
}
}

string polybios_encrypt(string s)
{
generar_matriz();
string ct;
for(int i=0;i<s.size();i++)
{
for(short j=1;j<9;j++)
{
for(short p=1;p<10;p++)
{
if (matriz[j][p] == s[i])
{
ct += matriz[j][0];
ct += matriz[0][p];
}
}
}
}
return ct;
}

string polybios_decrypt(string s)
{
generar_matriz();
string ct;
short p1;
short p2;
for(int i=0;i<s.size();i++)
{
for(int p=1;p<9;p++)
{
if (s[i]==matriz[p][0])
{
p1=p;
}
}
i++;
for(int p=1;p<10;p++)
{
if (s[i]==matriz[0][p])
{
p2=p;
}
}
ct += matriz[p1][p2];
}
return ct;
}

Stakewinner00

#18
Es que estoy creando una librería de cifrados y codificaciones y ya que estoy pues cuelgo los codes aki.

EDITO:Otro code básico de cifrado por desplazamiento. Este esta basado en Atbash

Código (cpp) [Seleccionar]
#include <string>

using std::string;

string atbash(string);

string atbash(string s)
{
string ct;
char abc[26]={'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'};
char cba[26]={'z','y','x','w','v','u','t','s','r','q','p','o','n','m','l','k','j','i','h','g','f','e','d','c','b','a'};
char ABC[26]={'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'};
char CBA[26]={'Z','Y','X','W','V','U','T','S','R','Q','P','O','N','M','L','K','J','I','H','G','F','E','D','C','B','A'};

for(int i=0;i<s.size();i++)
{
if(s[i]>='a' && s[i]<='z' || s[i]>='A' && s[i]<='Z')
{
for(int p=0;p<26;p++)
{
if (s[i]>='a' && s[i]<='z')
{
if(s[i]==abc[p])
ct += cba[p];
} else if(s[i]>='A' && s[i]<='Z') {
if(s[i]==ABC[p])
ct += CBA[p];
}
}
} else {
ct += s[i];
}
}
return ct;
}

X3R4CK3R

#19
Buenas, os dejo un par de snippets

El primero es para manipular el portapapeles en Windows:

Código (cpp) [Seleccionar]
#include <windows.h>

char *getClipboard()
{
   if (OpenClipboard(NULL)) {
       HANDLE clip = GetClipboardData(CF_TEXT);
       CloseClipboard();
       return (char*)clip;
   }
   else return NULL;
}

void setClipboard(char *output){
   const size_t len = strlen(output) + 1;
   HGLOBAL hMem =  GlobalAlloc(GMEM_MOVEABLE, len);
   memcpy(GlobalLock(hMem), output, len);
   GlobalUnlock(hMem);
   OpenClipboard(0);
   EmptyClipboard();
   SetClipboardData(CF_TEXT, hMem);
   CloseClipboard();
}


y el segundo es un encriptador de md5: http://www.zedwood.com/article/121/cpp-md5-function



Un saludo