Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: remi04 en 24 de Mayo de 2019, 05:02:18
Título: Ejercicio de examen a un conocido:
Publicado por: remi04 en 24 de Mayo de 2019, 05:02:18
Elaborar una función en C a la que le envías un char ascii dentro de rango del abecedario. La función intercambia mayúscula por minúscula o viceversa.
Es decir, le envías una ‘a’ y la función cambia su valor por una ‘A’ Le envías una ‘B’ y cambia el valor por una ‘b’
Las condiciones son:
-1 sola línea de código. - Solo se puede usar un “;” (Las de las interacciones for cuentan así que no vale)
Código: C
void maymin(char*letra){
/* aquí tu línea de código */
}
Título: Re:Ejercicio de examen a un conocido:
Publicado por: Jorge555 en 24 de Mayo de 2019, 06:00:37
*letra = (*letra) + 20;
supongo que será algo así, sumando un offset.
edito: he leído mal, cambia en los dos sentidos, lo anterior solo cambiaría en uno, habría que usar el operador ternario para establecer la condición, que haría el if else para restar o sumar el offset.
Primero necesito saber que lo que voy a estar convirtiendo es realmente una letra... Y segundo entre la A mayuscula que es 0x41 ( 0100 0001 ) Y la a minuscula que es 0x61 ( 0110 0001) cambia un solo bit. Por lo tanto podria cambiarlo haciendole una XOR...
EDIT: cambie a usar isalpha y isupper
Título: Re:Ejercicio de examen a un conocido:
Publicado por: remi04 en 24 de Mayo de 2019, 11:15:17
Yo lo había resuelto utilizando la XOR pero sin preguntar isalpha. Daba por sentado que siempre llegaría una letra y no otra cosa.
Hay gente que lo que ha hecho es una llamada a otra función.
Ya tienen una sola línea y un solo ; luego en esa función se explayaban poniendo de todo, sumas restas, ciclos for recorriendo la variable hasta su desborde para detectar la letra y luego buscar su minúscula en una tabla... en fin. Todos suspendidos :D
Esta claro que el profesor buscaba averiguar si la Peña controla una tabla ascii y operaciones a nivel de bits.