elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayuda con un codigo en c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda con un codigo en c  (Leído 2,612 veces)
@TGGG

Desconectado Desconectado

Mensajes: 2


Ver Perfil
ayuda con un codigo en c
« en: 24 Marzo 2021, 21:28 pm »

como puedo reducir mas este codigo

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main() {
  6.  
  7.  
  8.    FILE *file;
  9.    FILE *file2;
  10.    FILE *file3;
  11.    char texto=0;
  12.  
  13. int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,ii=0,j=0,k=0,l=0,m=0,n=0,espacio=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;
  14.    int cero=0,uno=0,dos=0,tres=0,cuatro=0,cinco=0,seis=0,siete=0,ocho=0,nueve=0;
  15.  
  16.    /*char abc[]={"abcdefghijklmnopqrstuvwxyz 123456789"};
  17.       char cif[]={"kw9svn8y7od6bmxtz4fl3gu2ahp10jcqire5"};*/
  18.  
  19.    int letra[37];
  20.    int i,as,aux;
  21.    char num;
  22.  
  23.  
  24.    file = fopen("cifrado.txt","wt");
  25.  
  26.  
  27.    if(file == NULL){
  28.        printf("Error al crear archivo 1\n");
  29.        exit(1);
  30.    }
  31.  
  32.  
  33.    file2 = fopen ("estadistica.txt","wt");
  34.  
  35.  
  36.    if(file2 == NULL){
  37.        printf("Error al crear archivo 2\n");
  38.        exit(1);
  39.    }
  40.  
  41.  
  42.    file3 = fopen("textosimple.txt","rb");
  43.  
  44.  
  45.    if(file3 == NULL){
  46.        printf("Error al crear archivo 3\n");
  47.        exit(1);
  48.    }
  49.  
  50.  
  51.  
  52.  
  53.    while(texto != EOF){
  54.  
  55.  
  56.        texto = fgetc(file3);
  57.  
  58.  
  59.        switch(texto){
  60.            case 'a':
  61.                a++;
  62.                letra[0] = a;
  63.                fputs("k", file);
  64.                break;
  65.            case 'b':
  66.                b++;
  67.                letra[1] = b;
  68.                fputs("y", file);
  69.                break;
  70.            case 'c':
  71.                c++;
  72.                letra[2] = c;
  73.                fputs("n", file);
  74.                break;
  75.            case 'd':
  76.                d++;
  77.                letra[3] = d;
  78.                fputs("1", file);
  79.                break;
  80.            case 'e':
  81.                e++;
  82.                letra[4] = e;
  83.                fputs("p", file);
  84.                break;
  85.            case 'f':
  86.                f++;
  87.                letra[5] = f;
  88.                fputs("2", file);
  89.                break;
  90.            case 'g':
  91.                g++;
  92.                letra[6] = g;
  93.                fputs("s", file);
  94.                break;
  95.            case 'h':
  96.                h++;
  97.                letra[7] = h;
  98.                fputs("1", file);
  99.                break;
  100.            case 'i':
  101.                ii++;
  102.                letra[8] = ii;
  103.                fputs("8", file);
  104.                break;
  105.            case 'j':
  106.                j++;
  107.                letra[9] = j;
  108.                fputs("x", file);
  109.                break;
  110.            case 'k':
  111.                k++;
  112.                letra[10] = k;
  113.                fputs("7", file);
  114.                break;
  115.            case 'l':
  116.                l++;
  117.                letra[11] = l;
  118.                fputs("w", file);
  119.                break;
  120.            case 'm':
  121.                m++;
  122.                letra[12] = m;
  123.                fputs("0", file);
  124.                break;
  125.            case 'n':
  126.                n++;
  127.                letra[13] = n;
  128.                fputs("9", file);
  129.                break;
  130.            case ' ':
  131.                espacio++;
  132.                letra[14] = espacio;
  133.                fputs("z", file);
  134.                break;
  135.            case 'o':
  136.                o++;
  137.                letra[15] = o;
  138.                fputs("3", file);
  139.                break;
  140.            case 'p':
  141.                p++;
  142.                letra[16] = p;
  143.                fputs("e", file);
  144.                break;
  145.            case 'q':
  146.                q++;
  147.                letra[17] = q;
  148.                fputs("i", file);
  149.                break;
  150.            case 'r':
  151.                r++;
  152.                letra[18] = r;
  153.                fputs("6", file);
  154.                break;
  155.            case 's':
  156.                s++;
  157.                letra[19] = s;
  158.                fputs(" ", file);
  159.                break;
  160.            case 't':
  161.                t++;
  162.                letra[20] = t;
  163.                fputs("c", file);
  164.                break;
  165.            case 'u':
  166.                u++;
  167.                letra[21] = u;
  168.                fputs("4", file);
  169.                break;
  170.            case 'v':
  171.                v++;
  172.                letra[22] = v;
  173.                fputs("j", file);
  174.                break;
  175.            case 'w':
  176.                w++;
  177.                letra[23] = w;
  178.                fputs("9", file);
  179.                break;
  180.            case 'x':
  181.                x++;
  182.                letra[24] = x;
  183.                fputs("v", file);
  184.                break;
  185.            case 'y':
  186.                y++;
  187.                letra[25] = y;
  188.                fputs("h", file);
  189.                break;
  190.            case 'z':
  191.                z++;
  192.                letra[26] = z;
  193.                fputs("5", file);
  194.                break;
  195.            case '0':
  196.                cero++;
  197.                letra[27] = cero;
  198.                fputs("u", file);
  199.                break;
  200.            case '1':
  201.                uno++;
  202.                letra[28] = uno;
  203.                fputs("g", file);
  204.                break;
  205.            case '2':
  206.                dos++;
  207.                letra[29] = dos;
  208.                fputs("q", file);
  209.                break;
  210.            case '3':
  211.                tres++;
  212.                letra[30] = tres;
  213.                fputs("m", file);
  214.                break;
  215.            case '4':
  216.                cuatro++;
  217.                letra[31] = cuatro;
  218.                fputs("b", file);
  219.                break;
  220.            case '5':
  221.                cinco++;
  222.                letra[32] = cinco;
  223.                fputs("r", file);
  224.                break;
  225.            case '6':
  226.                seis++;
  227.                letra[33] = seis;
  228.                fputs("f", file);
  229.                break;
  230.            case '7':
  231.                siete++;
  232.                letra[34] = siete;
  233.                fputs("t", file);
  234.                break;
  235.            case '8':
  236.                ocho++;
  237.                letra[35] = ocho;
  238.                fputs("d", file);
  239.                break;
  240.            case '9':
  241.                nueve++;
  242.                letra[36] = nueve;
  243.                fputs("o", file);
  244.                break;
  245.            default:;
  246.        }
  247.    }
  248.  
  249.    fprintf(file2,"\n\na = %d\n",a);
  250.    fprintf(file2,"b = %d\n",b);
  251.    fprintf(file2,"c = %d\n",c);
  252.    fprintf(file2,"d = %d\n",d);
  253.    fprintf(file2,"e = %d\n",e);
  254.    fprintf(file2,"f = %d\n",f);
  255.    fprintf(file2,"g = %d\n",g);
  256.    fprintf(file2,"h = %d\n",h);
  257.    fprintf(file2,"i = %d\n",ii);
  258.    fprintf(file2,"j = %d\n",j);
  259.    fprintf(file2,"k = %d\n",k);
  260.    fprintf(file2,"l = %d\n",l);
  261.    fprintf(file2,"m = %d\n",m);
  262.    fprintf(file2,"n = %d\n",n);
  263.    fprintf(file2,"espacio = %d\n",espacio);
  264.    fprintf(file2,"o = %d\n",o);
  265.    fprintf(file2,"p = %d\n",p);
  266.    fprintf(file2,"q = %d\n",q);
  267.    fprintf(file2,"r = %d\n",r);
  268.    fprintf(file2,"s = %d\n",s);
  269.    fprintf(file2,"t = %d\n",t);
  270.    fprintf(file2,"u = %d\n",u);
  271.    fprintf(file2,"v = %d\n",v);
  272.    fprintf(file2,"w = %d\n",w);
  273.    fprintf(file2,"x = %d\n",x);
  274.    fprintf(file2,"y = %d\n",y);
  275.    fprintf(file2,"z = %d\n",z);
  276.    fprintf(file2,"0 = %d\n",cero);
  277.    fprintf(file2,"1 = %d\n",uno);
  278.    fprintf(file2,"2 = %d\n",dos);
  279.    fprintf(file2,"3 = %d\n",tres);
  280.    fprintf(file2,"4 = %d\n",cuatro);
  281.    fprintf(file2,"5 = %d\n",cinco);
  282.    fprintf(file2,"6 = %d\n",seis);
  283.    fprintf(file2,"7 = %d\n",siete);
  284.    fprintf(file2,"8 = %d\n",ocho);
  285.    fprintf(file2,"9 = %d\n",nueve);
  286.    fprintf(file2,"\n");
  287.  
  288.    /*for(as=0; as<37; as++){
  289. }*/
  290.  
  291.  
  292.    for(i=0; i<37; i++){
  293.        aux = letra[i];
  294.        fprintf(file2,"%d\n",aux);
  295.    }  
  296.  
  297.    fclose(file);
  298.    fclose(file2);
  299.    fclose(file3);
  300.  
  301.    printf("\n\n");
  302.    printf("Cifrado guardado en archivo\n\n");
  303.    printf("Estadistica guardada en archivo\n\n");
  304.  
  305.    return 0;
  306. }

MOD: El código debe ir entre etiquetas de Código GeSHi


« Última modificación: 26 Marzo 2021, 10:47 am por K-YreX » En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: ayuda con un codigo en c
« Respuesta #1 en: 26 Marzo 2021, 12:15 pm »

Antes que nada: el código debe ir entre etiquetas de Código GeSHi. Puedes seleccionar el código, ir al desplegable de "Código GeSHi" encima del cuadro de texto y elegir el lenguaje correspondiente (C en este caso) o escribir directamente tú las etiquetas en el cuadro de texto de la siguiente manera:
[code=c]
Aquí tu código C
[/code]


Claro que se puede simplificar ese código y además ya tienes comentado por ahí cómo hacerlo: utilizando arrays.
Otro consejo es que utilices constantes en vez de utilizar números sueltos que no se sabe lo que significan. Además si en algún momento quieres cambiar su valor, basta con cambiarlo al declarar la constante y no en todo el código.
Código
  1. // cabeceras
  2.  
  3. #define NUM_CARACTERES 37 // Constante para el numero de caracteres
  4.  
  5. int main() {
  6.  char abecedario[] = "abcd..";
  7.  char cifrado[] = "...";
  8.  int estadisticas[NUM_CARACTERES] = {0}; // Inicializamos todo el array a 0
  9.  // Se puede hacer una comprobacion para evitar errores en tiempo de ejecucion mediante <assert.h>
  10.  assert(strlen(abecedario) == strlen(cifrado) && NUM_CARACTERES >= strlen(abecedario)); // Lanza un error si la condicion no es cierta
  11.  
  12.  FILE *fichero_simple = fopen("texto_simple.txt", "r");
  13.  FILE *fichero_cifrado = fopen("texto_cifrado.txt", "wt");
  14.  // Comprobar que los ficheros se han abierto correctamente y en caso contrario, terminar el programa
  15.  
  16.  char caracterActual;
  17.  int encontrado = 0; // se puede usar bool mediante <stdbool.h>
  18.  while((caracterActual = fgetc(fichero_simple)) != EOF) {
  19.    for(int i = 0; i < strlen(abecedario) && !encontrado; ++i) {
  20.      encontrado = (caracterActual == abecedario[i]);
  21.      if(encontrado) {
  22.        caracter = cifrado[i];
  23.        ++estadisticas[i];
  24.      }
  25.    }
  26.    fputc(caracter, fichero_cifrado); // De esta forma si un caracter no lo encuentra, lo copia sin cifrar
  27.    encontrado = 0;
  28.  }
  29.  
  30.  // Cerrar ficheros de texto simple y cifrado
  31.  
  32.  FILE *fichero_estadisticas = fopen("estadisticas.txt", "wt");
  33.  // Comprobar que se ha abierto correctamente
  34.  
  35.  for(int i = 0; i < strlen(abecedario); ++i)
  36.    fprintf(fichero_estadisticas, "%c = %d\n", abecedario[i], estadisticas[i]);
  37.  
  38.  // Cerrar fichero de estadisticas
  39. }


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con codigo en C (no me ejecuta un for y necesito ayuda) « 1 2 3 »
Programación C/C++
Søra 22 12,498 Último mensaje 22 Mayo 2010, 00:22 am
por Littlehorse
¿Cuál es la diferencia entre código objeto, código máquina y código binario?
Programación General
Aikanáro Anário 9 30,321 Último mensaje 23 Diciembre 2010, 15:19 pm
por pucheto
Ayuda con codigo
Desarrollo Web
ArhennJosey 4 2,713 Último mensaje 22 Marzo 2011, 17:29 pm
por RedZer
ayuda!! necesito ayuda con este pequeño codigo en c++
Programación C/C++
giraffe 1 5,512 Último mensaje 27 Mayo 2015, 06:25 am
por engel lex
Ayuda con mi codigo pls
Java
Wallcroft007 0 1,577 Último mensaje 12 Enero 2017, 04:30 am
por Wallcroft007
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines