martes, 17 de abril de 2012

CIFRADO DE VIGENERE

Este cifrado se puede resolver de 2 formas la primera es utilizando su tabla y la segunda es sumar las letras dependiendo de la posición en la que se encuentren en el abecedario.
El código esta hecho utilizando la segunda forma, es decir, primero se convierte ha código ASCII y luego se suman y se vuelven a convertir a letra normal.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

main()
{
     int b,i,c,j,x[20],y[20],z[20];
     char a[20],p[20],d[20];
   
     printf("\tCIFRADO DE VIGENERE\n\n");
     printf("\tSOLO PUEDES INTORDUCIR LAS LETRAS EN MAYUSCULAS\n");
     printf("\tNO PUEDES INTRODUCIR LA LETRA Ñ\n");
     printf("\nINTRODUCE LA PALABRA A ENCRIPTAR:\n");
     scanf("%s",&p);
     printf("\nINTRODUCE LA CLAVE:\n");
     scanf("%s",&a);
   
     b=strlen(p);
     c=strlen(a);
     printf("\nEl tamano de la palabra es:%i",b);
     printf("\nEl tamano de la clave es:%i",c);
   
     for(j=0;j<=b;j++)
     {
       strncat(a,a,16);
     }
   
       for(c=b;c<=b;c++)
       {
        }
   
        for(i=0;i<=b;i++)
        {
         x[i]=p[i]-65;
        }
     
         for(i=0;i<=c;i++)
         {
          y[i]=a[i]-65;
         }
   
          for(i=0;i<=c+1;i++)
          {
           }
   
           for(i=0;i<=b;i++)
           {
            z[i]=(x[i] + y[i])%26;
           }
     
            for(i=0;i<=b;i++)
            {
             d[i]=z[i]+65;      
            }
           
              printf("\n\n");
              printf("TU PALABRA ENCRIPTADA ES:");
             
             for(i=0;i<=b-1;i++)
             {                        
              printf("%c",d[i]);
              }          
getchar();                            
       
     getchar();
   
}

CIFRADO DE AUTOCLAVE

Este cifrado es un tipo de cifrado en el cual  el mensaje se va a concatenar con la clave hasta que tenga el mismo tamaño del mensaje para poder encriptar el mensaje
Bueno aquí esta el cogido hecho en Dev C++


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int b,i,a,j,x[30],y[30],z[30];
     char c[30],p[30],d[30];
   
     printf("\tCIFRADO AUTOCLAVE\n\n");
     printf("\tSOLO PUEDES INTORDUCIR LAS LETRAS EN MAYUSCULAS\n");
     printf("\nINTRODUCE LA PALABRA A ENCRIPTAR:\n");
     scanf("%s",&p);
     printf("\nINTRODUCE LA CLAVE:\n");
     scanf("%s",&c);
   
     b=strlen(p);
     a=strlen(c);
     printf("\nEl tamano de la palabra es:%i",b);
     printf("\nEl tamano de la clave es:%i",a);
   
     strncat(c,p,20);
      printf("\nTU PALA ES%s",c);
     
      for(a=b;a<=b;a++)
       {
        }
   
       for(i=0;i<=b;i++)
        {
         x[i]=p[i]-65;
        }
     
         for(i=0;i<=b;i++)
         {
          y[i]=c[i]-65;
          }
           for(i=0;i<=b;i++)
           {
            z[i]=(x[i] + y[i])%26;
           }
     
            for(i=0;i<=b;i++)
            {
             d[i]=z[i]+65;      
            }
           
            printf("\n\n");
            printf("\nTu palabra encriptada es:");
             for(i=0;i<=b-1;i++)
             {    
              printf("%c",d[i]);
             
              }          
                           
     getchar();  
     getchar();
   
}

jueves, 8 de marzo de 2012

METODO DE TRANPOSICION DE BLOQUES Y PERMUTACION

Este programa te sirve para poder permutar una palabra y tambien puedes divirla en bloques aunque esta sencillo si sirve

#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <string.h>
int main()
{
    char palabra[20],cambio[20],pivote[2]="x";
    int cont=0,a=0,permu=0,modu=0;
   
    while (cont<4)
    {
          system ("CLS");
          printf ("\t_______________________________________________________\n");
          printf("\tMETODO DE TRANPOSICION DE BLOQUES Y PERMUTACION\n\n");
          printf ("\t_______________________________________________________");
          printf ("\n\n\n\nEscribe el Tamaño de la Permutacion");
          printf("\nEL BLOQUE TIENE QUE SER ENTRE 2 Y 5): ");
          scanf("%d",&permu);
          if (permu>5)
          {
                  system ("CLS");
                  printf ("\t\t\t\n\n\n\n\n NUMERO INVALIDO\n\n");
                  system ("PAUSE");
                  cont++;  
          }
          if (permu<2)
          {
                  system ("CLS");
                  printf ("\t\t\t\n\n\n\n\n NUMERO INVALIDO\n\n");
                  system ("PAUSE");
                  cont++;  
          }
          if (permu>1&&permu<6)
          {
                               printf ("\n\nEscribe la Palabra a Encriptar: ");
                               scanf ("%s[^",&palabra);
                               printf ("\n\nLa palabra a encriptar es: %s", palabra);
                               a=strlen(palabra);//leer la cadena//
                               printf ("\n\nEl tamaño de tu palabra es: %d Caracteres", a);
                                         
                               if (permu==2)
                               {
                                       printf ("\n\nTu palabra Encriptada  es:");
                                       printf("%c%c%c%c%c",palabra[3],palabra[1],palabra[4],palabra[2],palabra[0]);            
                                       getch();
                               }
                                         
                               if (permu==3)
                               {
                                  printf ("\n\nTu palabra Encriptada es:");
                                  printf("%c%c%c%c%c",palabra[3],palabra[1],palabra[4],palabra[2],palabra[0]);            
                                  getch();
                                 }
                                                 
                               if (permu==5)
                               {
                                  printf ("\n\nTu palabra Encriptada es:");
                                  printf("%c%c%c%c%c",palabra[3],palabra[1],palabra[4],palabra[2],palabra[0]);            
                                  getch();
                               }
                                         
                               if (permu==4)
                               {
                                  printf ("\n\nTu palabra Encriptada es:");
                                  printf("%c%c%c%c",palabra[2],palabra[0],palabra[3],palabra[1]);            
                                  getch();
                               }                            
                              }
                               cont=4;
                               }

    return 0;
}

miércoles, 7 de marzo de 2012

PROGRAMA PARA SUMAR, RESTAR O MULTIPLICAR MATRICES

Este es un programa hecho en Dev C++ que hacer tres operaciones basicas con matrices. "Es un poco largo"


#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

int main()
{
    int s,i,j,o;
   
    do
    {
   
    printf("\t\tPROGRAMA DE ALGEBRA MATRICIAL\n\n");
    printf("\n1 SUMA\n2 RESTA\n3 MULTIPLICACION\n4 SALIR");
    printf("\n\nQue operacion deseas realizar:");
    scanf("%d",&o);
   
    //SUMA();
    if(o==1)
    {
      int f,c,a,cont;
      int matrizA[10][10],matrizB[10][10],matrizC[10][10];
     
      printf("\ntu operacion es SUMA");
      printf("\n\tINGRESANDO LOS VALORES DE LAS FILAS Y COLUMNAS");
      printf("\n\nEL RANGO DE VALORES DE LA FILA ES DE 2 A 9");
      printf("\n\ncuantas filas deseas?:");
      scanf("%d",&f);
      printf("\nEL RANGO DE VALORES DE LA COLUMNA ES DE 2 A 9");
      printf("\ncuantas columnas deseas?:");
      scanf("%d",&c);    
     
      //MATRIZ A
           printf("\t\nINGRESANDO VALORES DE LA MATRIZ A ");        
           printf("\nintroduce los valores de la columna:");
           //scanf("\n%d",&a);
           printf("\nintriduce los valores de la fila:");
           //scanf("\n%d",&a);
         
       for(i=1;i<=f;i++)
       {
         printf("\n\t");
                   
        for(j=1;j<=c;j++)
        {
           printf("\n\t");                      
           printf("posicion (%i,%i):",i,j);
           scanf("%i",&a);
           matrizA[i][j]=a;
        }
       }
     
       //MATRIZ B
           printf("\t\nINGRESANDO VALORES DE LA MATRIZ B ");          
           printf("\nintroduce los valores de la columna:");
           //scanf("\n%d",&a);
           printf("\nintriduce los valores de la fila:");
           //scanf("\n%d",&a);
     
       for(i=1;i<=f;i++)
       {
         printf("\n\t");
       
        for(j=1;j<=c;j++)
        {          
           printf("\n\t");
           printf("posicion (%i,%i):",i,j);
           scanf("%i",&a);
           matrizB[i][j]=a;
        }
       }
     
       //OPERACION
     
       for(i=1;i<=f;i++)
       {
                       
          for(j=1;j<=c;j++)
          {            
             matrizC[i][j]=matrizA[i][j] + matrizB[i][j];
             printf("\nTU RESULTADO ES:");
             printf("(%i,%i):",i,j);
             printf("%i",matrizC[i][j]);
          }
       }                                                      
         getch();
         getch();
      }
     
      //RESTA();
     
    if(o==2)
    {
      int f,c,a,r;
      int matrizD[10][10],matrizE[10][10],matrizF[10][10];
     
      printf("\ntu operacion es RESTA");
      printf("\n1 D-E \n2 E-D");
      printf("\ncomo deseas la resta:");
      scanf("%d",&r);
     
      if(r==1)
      {
        printf("\n\tTU FORMA ES D-E");    
        printf("\n\tINGRESANDO LOS VALORES DE LAS FILAS Y COLUMNAS");
        printf("\n\nEL RANGO DE VALORES DE LA FILA ES DE 2 A 9");
        printf("\n\ncuantas filas deseas?:");
        scanf("%d",&f);
        printf("\nEL RANGO DE VALORES DE LA COLUMNA ES DE 2 A 9");
        printf("\ncuantas columnas deseas?:");
        scanf("%d",&c);
     
        //MATRIZ D
               
        printf("\t\nINGRESANDO VALORES DE LA MATRIZ D ");              
        printf("\nintroduce los valores de la columna:");
        //scanf("\n%d",&a);
        printf("\nintriduce los valores de la fila:");
        //scanf("\n%d",&a);
       
        for(i=1;i<=f;i++)
        {
          printf("\n\t");
       
          for(j=1;j<=c;j++)
          {
           printf("\n\t");
           printf("posicion (%i,%i):",i,j);
           scanf("%i",&a);
           matrizD[i][j]=a;
          }
        }
     
       //MATRIZ E
                     
       printf("\t\nINGRESANDO VALORES DE LA MATRIZ E ");              
       printf("\nintroduce los valores de la columna:");
       //scanf("\n%d",&a);
       printf("\nintriduce los valores de la fila:");
       //scanf("\n%d",&a);
               
       for(i=1;i<=f;i++)
       {
         printf("\n\t");
       
        for(j=1;j<=c;j++)
        {
           printf("\n\t");
           printf("posicion (%i,%i):",i,j);
           scanf("%i",&a);
           matrizE[i][j]=a;
        }
       }
     
      //OPERACION
     
      for(i=1;i<=f;i++)
       {
                       
          for(j=1
          ;j<=c;j++)
          {            
             matrizF[i][j]= matrizD[i][j] - matrizE[i][j];
             printf("\nTU RESULTADO ES:");
             printf("(%i,%i):",i,j);
             printf("%i",matrizF[i][j]);
          }
       }                                                      
         getch();  
         getch();
      }
     
      if(r==2)
      {
        printf("\n\tTU FORMA ES E-D");
        printf("\n\tINGRESANDO LOS VALORES DE LAS FILAS Y COLUMNAS");
        printf("\n\nEL RANGO DE VALORES DE LA FILA ES DE 2 A 9");
        printf("\n\ncuantas filas deseas?:");
        scanf("%d",&f);
        printf("\nEL RANGO DE VALORES DE LA COLUMNA ES DE 2 A 9");
        printf("\ncuantas columnas deseas?:");
        scanf("%d",&c);
     
        //MATRIZ D
               
        printf("\t\nINGRESANDO VALORES DE LA MATRIZ D ");              
        printf("\nintroduce los valores de la columna:");
       // scanf("\n%d",&a);
        printf("\nintriduce los valores de la fila:");
        //scanf("\n%d",&a);
       
        for(i=1;i<=f;i++)
        {
          printf("\n\t");
       
          for(j=1;j<=c;j++)
          {
           printf("\n\t");
           printf("posicion (%i,%i):",i,j);
           scanf("%i",&a);
           matrizD[i][j]=a;
          }
        }
     
       //MATRIZ E
                     
       printf("\t\nINGRESANDO VALORES DE LA MATRIZ E ");              
       printf("\nintroduce los valores de la columna:");
       //77scanf("\n%d",&a);
       printf("\nintriduce los valores de la fila:");
       //scanf("\n%d",&a);
               
       for(i=1;i<=f;i++)
       {
         printf("\n\t");
       
        for(j=1;j<=c;j++)
        {
           printf("\n\t");
           printf("posicion (%i,%i):",i,j);
           scanf("%i",&a);
           matrizE[i][j]=a;
        }
       }
     
      //OPERACION
     
      for(i=1;i<=f;i++)
       {
                       
          for(j=1;j<=c;j++)
          {            
             matrizF[i][j]= matrizE[i][j] - matrizD[i][j];
             printf("\nTU RESULTADO ES:");
             printf("posicion (%i,%i):",i,j);
             printf("%i",matrizF[i][j]);
          }
       }                                                      
         getch();
         getch();
      }
      }
     
      //MULTIPLICACION();
     
    if(o==3)
    {
      int m,n,o,p,i,j,k,x,a;
      int matrizX[10][10],matrizY[10][10],matrizZ[10][10];
     
      printf("\ntu operacion es MULTIPLICACION");
      printf("\n1 X*Y \n2 Y*X");
      printf("\ncomo deseas la MULTIPLICACION:");
      scanf("%d",&x);
     
      if(x==1)
      {
       printf("\n\tTU FORMA ES X*Y");  
       printf("\n\tINGRESANDO LOS VALORES DE LAS FILAS Y COLUMNAS DE LA MATRIZ X");      
      printf("\n\nEL RANGO DE VALORES DE LA FILA ES DE 2 A 9");
      printf("\n\ncuantas filas deseas?:");
      scanf("%d",&m);
      printf("\nEL RANGO DE VALORES DE LA COLUMNA ES DE 2 A 9");
      printf("\ncuantas columnas deseas?:");
      scanf("%d",&n);
      printf("\n\tINGRESANDO LOS VALORES DE LAS FILAS Y COLUMNAS DE LA MATRIZ Y");      
      printf("\n\nEL RANGO DE VALORES DE LA FILA ES DE 2 A 9");
      printf("\n\ncuantas filas deseas?:");
      scanf("%d",&o);
      printf("\nEL RANGO DE VALORES DE LA COLUMNA ES DE 2 A 9");
      printf("\ncuantas columnas deseas?:");
      scanf("%d",&p);
     
      //MATRIZ X
     
       printf("\t\nINGRESANDO VALORES DE LA MATRIZ X ");              
       printf("\nintroduce los valores de la columna:");
       //scanf("\n%i",&a);
       printf("\nintroduce los valores de la fila:");
       //scanf("\n%i",&a);
     
       for(i=1;i<=m;i++)
       {
         printf("\n\t");              
     
        for(j=1;j<=n;j++)
        {          
           printf("\n\t");
           printf("posicion (%i,%i):",i,j);
           scanf("%i",&a);
           matrizX[i][j]=a;
        }
       }
     
       //MATRIZ Y
     
        printf("\t\nINGRESANDO VALORES DE LA MATRIZ Y ");                
        printf("\nintroduce los valores de la columna:");
        //scanf("\n%d",&a);
        printf("\nintriduce los valores de la fila:");
        //scanf("\n%d",&a);
                 
       for(i=1;i<=o;i++)
       {
         printf("\n\t");
       
        for(j=1;j<=p;j++)
        {          
           printf("\n\t");
           printf("posicion (%i,%i):",i,j);
           scanf("%i",&a);
           matrizY[i][j]=a;
        }
       }
     
       //OPERACION
     
       for (i=1;i<=m;i++)
{
for (j=1;j<=p;j++)
{
matrizZ[i][j]=0; /*Limpia la variable para entrar de nuevo al for*/
for (k=1;k<=n;k++)
{
matrizZ[i][j]=((matrizX[i][k] * matrizY[k][j])+ matrizZ[i][j]);
}
}
}
printf("\n\nLa matriz resultante de la multiplicacion es: \n");

/*Ciclo que imprime la matriz resultante*/
for (i=1;i<=m;i++)
{
printf("\n");

for(j=1;j<=p;j++)
{
  printf("\nTU RESULTADO ES");
  printf("(%i,%i):",i,j);
  printf(" %i ",matrizZ[i][j]);
}
}
getch();
       }
     
       if(x==2)
      {
       printf("\n\tTU FORMA ES X*Y");  
       printf("\n\tINGRESANDO LOS VALORES DE LAS FILAS Y COLUMNAS DE LA MATRIZ X");      
      printf("\n\nEL RANGO DE VALORES DE LA FILA ES DE 2 A 9");
      printf("\n\ncuantas filas deseas?:");
      scanf("%d",&m);
      printf("\nEL RANGO DE VALORES DE LA COLUMNA ES DE 2 A 9");
      printf("\ncuantas columnas deseas?:");
      scanf("%d",&n);
      printf("\n\tINGRESANDO LOS VALORES DE LAS FILAS Y COLUMNAS DE LA MATRIZ Y");      
      printf("\n\nEL RANGO DE VALORES DE LA FILA ES DE 2 A 9");
      printf("\n\ncuantas filas deseas?:");
      scanf("%d",&o);
      printf("\nEL RANGO DE VALORES DE LA COLUMNA ES DE 2 A 9");
      printf("\ncuantas columnas deseas?:");
      scanf("%d",&p);
     
      //MATRIZ X
     
       printf("\t\nINGRESANDO VALORES DE LA MATRIZ X ");              
       printf("\nintroduce los valores de la columna:");
       //scanf("\n%i",&a);
       printf("\nintroduce los valores de la fila:");
       //scanf("\n%i",&a);
     
       for(i=1;i<=m;i++)
       {
         printf("\n\t");              
     
        for(j=1;j<=n;j++)
        {          
           printf("\n\t");
           printf("posicion (%i,%i):",i,j);
           scanf("%i",&a);
           matrizX[i][j]=a;
        }
       }
     
       //MATRIZ Y
     
        printf("\t\nINGRESANDO VALORES DE LA MATRIZ Y ");                
        printf("\nintroduce los valores de la columna:");
        //scanf("\n%d",&a);
        printf("\nintriduce los valores de la fila:");
        //scanf("\n%d",&a);
                 
       for(i=1;i<=o;i++)
       {
         printf("\n\t");
       
        for(j=1;j<=p;j++)
        {          
           printf("\n\t");
           printf("posicion (%i,%i):",i,j);
           scanf("%i",&a);
           matrizY[i][j]=a;
        }
       }
       }
     
       //0PERACION
     
        for (i=1;i<=m;i++)
{
for (j=1;j<=p;j++)
{
matrizZ[i][j]=0; /*Limpia la variable para entrar de nuevo al for*/
for (k=1;k<=n;k++)
{
matrizZ[i][j]=(matrizY[i][k] * matrizX[k][j])+ matrizZ[i][j];
}
}
}

printf("\n\nLa matriz resultante de la multiplicacion es: \n");

/*Ciclo que imprime la matriz resultante*/
for (i=1;i<=m;i++)
{
printf("\n");

for(j=1;j<=p;j++)
{
   printf("\nTU RESULTADO ES");
   printf("(%i,%i):",i,j);    
   printf(" %i ",matrizZ[i][j]);
}
}
    getch();    
      }
     
getchar();
}
while(o!=4);    
}

jueves, 9 de febrero de 2012

CODIGO QUE TE PIDA UNA CONTRASEÑA

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <conio.h>

int main()
{
    clrscr();
    int c;
    char cont[6]="lalo",cont2[6];

    c=0;
    printf("PROGRAMA PARA UNA CONTRASEÑA\n\n\n\n");
    printf("SOLO TIENES TRES INTENTOS\n\n\n");


    while(c<=2)
    {
       c++;
      printf ("\n\n\n\nINTRODUCE EL USUARIO:   ");
          scanf("%s",&cont2);
      //scanf ("%d",&us);
     // us=getchar();
     // putchar('*');

       if(!strcmp(cont2,cont))
    {
       printf("\n\n\nBIENVENIDO\n");
       }
    else
     {
        printf("\n\n ERROR \n\nintroduce la contraseña correcta");
        }
        getchar();

 }
}

CODIGO QUE TE PIDA UNA CONTRASEÑA

#include <stdio.h>
#include <math.h>
#include <string.h>

int main()
{
   clrscr();
    int c;
    char cont[6]="lalo",cont2[6];

    c=0;
    printf("PROGRAMA PARA UNA CONTRASEÑA\n\n\n\n");
    printf("SOLO TIENES TRES INTENTOS\n\n\n");


    while(c<=2)
    {
       c++;
      printf ("\n\n\n\nINTRODUCE EL USUARIO:   ");
          scanf("%s",&cont2);
      //scanf ("%d",&us);
     // us=getchar();
     // putchar('*');

       if(!strcmp(cont2,cont))
    {
       printf("\n\n\nBIENVENIDO\n");
       }
    else
     {
        printf("\n\n ERROR \n\nintroduce la contraseña correcta");
        }
        getchar();

 }
}

CODIGO DE CIFRADO CESAR

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 128
//prototipo de funciones.
void encriptar(char frase[MAX],int numero);
void desencriptar(char frase[MAX],int numero);
//Procedimiento principal.
int main()
{
    //Variables necesarias
    int x;
    char cadena[MAX];
    //Presentación
    printf("Encriptacion/Desencriptacion:\n");
    printf("        METODO CESAR:\n");
    printf("-----------------------------\n");
    printf("introduce una cadena:     ");
    //Un especificador que admite texto:
    scanf("%128[^\n]", cadena);

    //Vacía el buffer del teclado
    while(getchar()!='\n');
   
    //Pedimos el número
    printf("introduce un numero : ");
    scanf("%d",&x);
   
    //Vacía el buffer del teclado
    while(getchar()!='\n');
    //Llamamos a la función encriptar
    encriptar(cadena, x);
    getchar();
    //Llamamos a la función desencriptar
    desencriptar(cadena, x);
    getchar();
    //Salimos
    return 0;
}

//Función para desencriptar Cifrado Cesar en C
void desencriptar(char frase[MAX],int numero)
{
    int i=0;
    while(frase[i]!='\0')
    {
        frase[i]=frase[i]-numero;
        i++;
    }
    printf("\nLa frase desencriptada es:\n%s\n",frase);
}
//Función para encriptar Cifrado Cesar en C
void encriptar(char frase[MAX],int numero)
{
    int i=0;
    char letra;
    while(frase[i]!='\0')
    {
        frase[i]=frase[i]+numero;
        i++;
    }
    printf("\nLa frase encriptado es:\n%s\n",frase);
}