/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

mayusculas a minusculas

 
      Índice del Foro elrincondelc.com -> Algoritmos
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
jorgeiv500



Registrado: 16 Oct 2005
Mensajes: 3

MensajePublicado: 17/10/2005 3:22 pm
Título: mayusculas a minusculas

como hago para pasar de nayusculas a minusculas en cadenas de datos o
vectores
Volver arriba
the_end



Registrado: 05 Sep 2005
Mensajes: 80
Ubicación: FISI

MensajePublicado: 17/10/2005 4:08 pm
Título: Re: mayusculas a minusculas

Ya que estoy de humor, aqui te mando el codigo:

Funcion que convierte a minusculas los caracteres encontrados en una cadena.
Sólo modificará los valores reconocidos como caracteres MAYÚSCULAS, el resto lo deja como esta.
Código:

#include <stdio.h>

#define LONG_MAX   81

void UpperToLower (char str[])
{
    for (int k = 0; (str[k] != 0) && (k <= LONG_MAX - 1); k++)
    {
        if (str[k] >= 'A' && str[k] <= 'Z')
        {
            str[k] = str[k] + 'a' - 'A';
        }
    }
}

int main ()
{
    char strCad[LONG_MAX];
    int k;

    printf ("Introduce cadena: ");

    k=0;
    while (((strCad[k] = getchar()) != '\n') && (k < LONG_MAX -1))
        k++;

    strCad[k] = 0;

    UpperToLower (strCad);    // Funcion que necesitas

    printf ("%s", strCad);

    system ("PAUSE");
    return 0;
}


Per tambien puedes hacerlo usando la funcion "tolower ()":
- int tolower (int ch): devuelve el equivalente en minuscualas de 'ch', si 'ch' es una letra; en otro caso devulve 'ch' sin modificar.
Tu eliges.. Very Happy

EOF
Volver arriba
Karman



Registrado: 15 Oct 2005
Mensajes: 357

MensajePublicado: 17/10/2005 4:26 pm
Título:

otra posible respuesta... un poco mas complicada...

char *UpperToLower (char *str) {
char *tmp=str;
while(*tmp){if((*tmp>='A')&&(*tmp<='Z'))*tmp-=0x20;tmp++;}
return str;
}
_________________
www.inexinferis.co.nr

-. Karman .-
Volver arriba
the_end



Registrado: 05 Sep 2005
Mensajes: 80
Ubicación: FISI

MensajePublicado: 17/10/2005 5:04 pm
Título:

Ten cuidado con lo que haces karman, los punteros son cosa seria y un error puede causar problemas insospechados...
Karman escribió:
otra posible respuesta... un poco mas complicada...

char *UpperToLower (char *str) {
char *tmp=str;
while(*tmp){if((*tmp>='A')&&(*tmp<='Z'))*tmp-=0x20;tmp++;}
return str;
}

Esta bien tu intento pero, porque devuelves 'str' ??, si ya lo estas modificando, la cadena que se ha ingresado, con el puntero *tmp.
Al cambiar *tmp, tambien cambia el valor al que apunta en la cadena 'str'.
Y además, *temp -= 0x20 no sería así; Aquí se devería SUMAR.
Entonces ordenando, quedaría así:
Código:

void UpperToLower (char *str) {
   char *tmp = str;
   while (*tmp)
   {
      if((*tmp>='A')&&(*tmp<='Z'))
         *tmp += 0x20;
      tmp++;
   }
}

No retorna nada, ya que en la misma funcion se esta modificando los caracteres de la cadena.
Entonces con la llamada :
Código:
UpperToLower (strCad);
se tendría la cadena 'strCad' en minusculas..
Saludos,
EOF
Volver arriba
      Índice del Foro elrincondelc.com -> Algoritmos
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com