¿Cómo se hace una declaración de cambio para asignar a cada carácter un valor en js? Por ejemplo, a = b, b = c, c = d, m = n. Luego, cuando ingrese ab, la salida será bc. ¿Cuál es el código para todo esto?

Todos los ejemplos a continuación modifican la cadena de entrada, por lo que no hay salida separada. La lectura de la entrada del usuario y la impresión se dejan como ejercicio para el lector.

Lo más importante a tener en cuenta es que los caracteres ASCII son solo números de 8 bits, y todas las operaciones aritméticas comunes funcionan en ellos. Más que eso, están organizados de manera inteligente para que las letras estén en orden lexicográfico. ‘a’ + 1 == ‘b’ y así sucesivamente.

Primero, le mostraré cómo hacer lo que sugiere en la pregunta: cambie cada carácter por el siguiente en el alfabeto. No hay necesidad de cambiar aquí. Asumiré que ‘z’ debe cambiarse a ‘a’ … debe especificar cómo se deben manejar los casos de esquina.

  transliterate nulo (char * s)
 {
     size_t i = 0;
     while (s [i]! = '\ 0')
     {// solo toca letras
         if (isalpha (s [i]))
             s [i] = (inferior (s [i]) == 'z') 
                 ?  s [i] - ('z' - 'a')
                 : s [i] + 1;
     }
 }

Ahora, usar un interruptor da más libertad para asignar los personajes. Se vería algo así:

  transliterate2 vacío (char * s)
 {
     size_t i = 0;
     while (s [i]! = '\ 0')
     {
         interruptor (s [i])
         {
         caso 'a': s [i] = 'b';  rotura;
         caso 'b': s [i] = 'c';  rotura;
         // y así ...
         }
     }
 }

Si puede definir una operación aritmética que haga lo que necesita, hágalo y documente en un buen comentario. Si se trata de una transliteración más o menos aleatoria, escriba el interruptor.

Ah, y una tercera opción … hacer una tabla de búsqueda. Un buen compilador optimizará la versión del interruptor desde arriba a aproximadamente el mismo código, por lo que no debería haber una diferencia significativa en la velocidad.

  búsqueda de caracteres [256];
 búsqueda ['a'] = 'b';
 búsqueda ['b'] = 'c';
 // haz una buena función init, o usa una lista de iniciadores

 transliterate3 vacío (char * s)
 {
     para (size_t i = 0; s [i]; s [i] = búsqueda [s [i]]);
 }

More Interesting

¿Qué significa un superíndice de asterisco en una ecuación?

¿Cómo podemos demostrar que para cualquier par de números naturales x> 1 yn> 1 lo siguiente siempre es cierto: [matemática] x ^ n> n [/ matemática]? Entiendo que parece obvio, pero me pregunto si hay una prueba general.

Dado que la repetición de .9 es igual a 1, ¿en qué punto los científicos y los matemáticos consideran números similares iguales a 1? ¿Debe un número repetirse para siempre o hay un punto en el que está “lo suficientemente cerca”?

Álgebra: ¿Qué son los polinomios en matemáticas?

¿Qué es [matemáticas] x [/ matemáticas] si [matemáticas] [X] ^ 2 = [X + 2] [/ matemáticas], si [.] Denota el entero más grande?

Suponga que [math] u_n = \ lim \ limits_ {m \ to \ infty} (u_ {n + 1} + \ cdots + u_ {n + m}) [/ math] y [math] \ lim \ limits_ {n \ to \ infty} \ sum_ {k = 1} ^ n u_k <+ \ infty [/ math]. ¿Cómo puedo probar [matemáticas] u_n = 0 [/ matemáticas] para todas [matemáticas] n [/ matemáticas]?

¿Cómo puedo expresar (x ^ 2) ^ nx ^ 5 / x ^ n como una potencia de x? ¿Hay algún consejo para escribir este tipo de fórmula que no use “^”?

¿Cómo integro [math] \ displaystyle \ int \ frac {\ ln (x)} {1 + x ^ 2} \, \ mathrm dx [/ math]?

Cómo probar por definición el límite de [matemáticas] \ frac {n-2 ^ {x_n}} {n + x_n ^ 2} [/ matemáticas] donde [matemáticas] \ lim_ {n \ to \ infty} x_n = L [ / matemáticas] y L es un número positivo

Cómo demostrar que x ^ 3 + 1 tiene exactamente una raíz entera