Cómo modificar el progtwig ASCII con números primos C

Aquí está mi progtwig que le pide a un usuario que ingrese una línea de texto y luego muestra el código ASCII con el que está asociado, y luego modifica el código ASCII agregando más 1 a i, y también imprime el nuevo carácter asociado con eso nuevo código ASCII.

#include  #include  #include  #include  int main() { char s[ 70 ]; // define character array of size 70 size_t i; // loop counter // use gets to get text from user puts( "Enter a line of text: \a\n" ); fgets( s, 70, stdin ); // convert each character to ASCII and output puts("\n ASCII code for the characters \n"); for ( i = 0; s[ i ] != '\0'; ++i ) { printf(" %c:%d",(s[ i ]),(s[ i ])); } // end for Uppercase ASCII // convert each character to modified ASCII and output puts( "\nThe line modified with progressively higher ASCII:\n" ); for ( i = 0; s[ i ] != '\0'; ++i ) { printf( "%c", ( s[ i ] + (i+1)) ); } // end for modified characters puts(""); printf( " \n modified ASCII code for the entered string \n\n\a"); for ( i = 0; s[ i ] != '\0'; ++i ) { printf( " %c:%d",(s[ i ] + (i+1)),(s[ i ] +(i+1))); } // end for modified ASCII code printf( "\n \t The final value of loop variable 'i' is:%d\n", i); puts( "" ); system("PAUSE"); } 

Estoy teniendo dificultades para modificarlo, por lo que el código ASCII y los caracteres cambian en los primeros siete números primos 2,3,5 … 17 y después de que esos primeros 7 números primos suban, se invierte 17,13,11,7 , … 2. Entonces, después de que el primer bucle diga que g tiene el código ASCII 103, el código ASCII modificado ahora será 105 y la nueva letra será i. ¿Alguien puede ayudarme?

Comience por declarar una matriz que almacena su patrón (números primos, en orden ascendente y luego en orden descendente, de tal manera que al reducir el módulo el tamaño de las matrices causará un ciclo). Por ejemplo:

 unsigned int prime[] = { 2, 3, 5, 7, 11, 13, 17, 13, 11, 7, 5, 3 }; 

Ahora, en lugar de agregar (i + 1) a cada carácter de su bucle, querrá agregar prime[i % (sizeof prime / sizeof *prime)] . Por ejemplo:

 for (i = 0; s[i] != '\0'; i++) { putchar(s[i] + prime[i % (sizeof prime / sizeof *prime)]); } 

PS Técnicamente, no se requiere que sea ASCII. Piénselo de esta manera: C y ASCII van juntos como el café y la leche de vaca. A la mayoría de las personas les encanta, pero de vez en cuando alguien usa leche de coco o crema.