SOLUCIONADO

Iniciado por ElectronicEnginner, 27 Abril 2018, 03:39 AM

0 Miembros y 1 Visitante están viendo este tema.

ElectronicEnginner

HOLA MUCHAS GRACIAS YA SOLUCIONE EL TEMA, PUEDEN BORRARLO

Kenji-chan

#1
en realidad para pasar a mayúsculas usando el código ascii hay que restarle 32 ya que esa es la la separación que tiene la 'A'(65) de la 'a'(67)

puedes hacer una función que se que se llame upper(char* str) que reciba un string y le reste 32  a cada carácter luego puedes tratar los casos especiales como son los acentos y la ñ en la misma función claro

Serapis

Como te dice Kenji-chan, pero precisando un poco más...

Crea un array con las 256 letras, marca con 1 aquellas que pueden convertirse en mayúsculas o minúsculas, el resto queda con valor 0.

Luego tu función simplemente será un bucle, que recorre cada caracter del string, comprueba si está en el array de 'CaracteresCapitalizables' y hace la conversión. Aquí un sencillo opseudocódigo, para resolver ambos casos en la misma función.


Funcion Capitalizar(string Texto, buleano ToUpper)
   Si ToUpper = TRUE
       Por cada letra en el Texto
           Si CaracteresCapitalizables(letra) = 1  // o TRUE, etc...
               ... Toupper, para dicha letra.
           Fin si
       Siguiente
   Sino
       // mismo código, pero aplicando ToLower

   Fin si
Fin funcion



ToUpper
Si Letra and 32 luego  // tiene el bit de minúscula
  Letra = Letra xor 32  // pués se lo quitamos.
Fin si



ToLower:
Letra = Letra or 32 //ponemos el bit de minúsculas... si ya lo tenía, no cambia nada,
   // no necesitamos en este caso perder el tiempo verificando si lo tenía o no.


MAFUS

Más fácil:
Incluir el
#include <locales.h>

Y como primera instrucción ejecutable del main:
setlocale(LC_ALL, "spanish");

Así todo lo referente a conversiones, representaciones, monedas, etc. pasará al formato español. Eso incluye ñ, tildes, etc.