Ver Mensaje Individual
  #4 (permalink)  
Antiguo 07/02/2011, 04:49
aadriii
 
Fecha de Ingreso: febrero-2011
Mensajes: 3
Antigüedad: 13 años, 9 meses
Puntos: 0
Pregunta Respuesta: Problema con cifrado cesar codigo C

Muchas gracias por la respuesta, me ha servido mucho, pero tengo una última duda, tengo este código, y necesito que me cuente los espacios, ya que no me lo hace. El código que tú has puesto #3 me sirve, pero no genera números aleatorios por carácter en el string, simplemente suma 4 posiciones a cada carácter. Pongo código a ver si me podéis ayudar con ese problema de que no cuente los espacios. Gracias

Código:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define max_tam 1000

void codificacion();
int aleatorio();

char s_patron[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz0123456789?!*()$#.,";
char s_original[max_tam], s_codificado[max_tam], s_decodificado[max_tam];
int t_original, t_patron, t_codificado, t_codigo, t_decodificado, s_codigo[max_tam];

main()
{  
      int i;
      srand(time((NULL)));
      printf("Introduce un texto a codificar:\n");
      scanf("%s", &s_original);
      codificacion();
      printf("La frase codificada es: %s\n", s_codificado);
      for(i=0;i<t_codigo;i++)printf("%d", s_codigo[i]);
      system("PAUSE");
}

void codificacion()
{
      int i, j, n;
      t_original=strlen(s_original);
      for(i=0; i<t_original;i++)
      {
               t_patron=strlen(s_patron);
               for(j=0; j<t_patron; j++)
               {
                        if(s_original[i]==s_patron[j] || s_original[i] == ' ')
                        {
                             n=aleatorio();
                             s_codificado[i]=s_patron[j+n];
                             s_codigo[i]=n;                            
                        }
               }                                      
      }
}     

int aleatorio()
{
      int aleatorio;
      aleatorio = rand()%9+1;
      return aleatorio;
}