elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  convertir minúscula a mayúscula
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: convertir minúscula a mayúscula  (Leído 47,438 veces)
m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
convertir minúscula a mayúscula
« en: 24 Febrero 2013, 18:15 pm »

Alguien sabe de alguna manera de convertir de minúscula a mayúscula sin la necesidad de rstarle - 32, es que tengo un problema que me pide que le ingrese una letra, si la letra es mayúscula lo dejo así, pero si la letra es minúscula tengo que hacer que el código me la reconozca como si ffuera mayúscula


gracias ;D


En línea

85

Desconectado Desconectado

Mensajes: 206



Ver Perfil WWW
Re: convertir minúscula a mayúscula
« Respuesta #1 en: 24 Febrero 2013, 19:05 pm »

Si estás de acuerdo en usar la librería standart:

http://es.wikipedia.org/wiki/Ctype.h

tenés una lista como la siguiente para hacer conversiones de ese tipo:

tolower
toupper
strlwr
strupper
islower
isupper
etc

Eso en primer lugar, ahora sino querés usar el código ASCII podés hacer algo más costoso pero efectivo.

Osea que tu cadena va a ser examinada char por char para comprobar que se trate de una letra, ya sea mayúscula o minúscula. No se si es lo que pedís realmente, espero haberte ayudado

Código:
bool SonLetras(const char* buf)
{
#define MAX_ALFA 53
const char alfabetico[] = {
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',0};
int ok=0;
int len = strlen(buf);
for(int i=0; i<len; i++){
for(int j=0; j<MAX_ALFA; j++){
if(buf[i]==alfabetico[j]){
ok++;
break;
}}}
if(ok==len) return true;
return false;
}



En línea

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/
MeCraniDOS


Desconectado Desconectado

Mensajes: 337


Sr. Glass


Ver Perfil
Re: convertir minúscula a mayúscula
« Respuesta #2 en: 24 Febrero 2013, 19:59 pm »

De minúscula a mayuscula:

Código
  1. #include <stdio.h>
  2. #include <ctype.h>
  3.  
  4. int main()
  5. {
  6.   char cadena[50];
  7.   int i;
  8.  
  9.   printf("\nEscribe un letra o frase: ");
  10.   scanf("%s", &cadena);
  11.  
  12.   for(i = 0; cadena[i]; i++)
  13.      cadena[i] = toupper(cadena[i]);
  14.  
  15.   printf("\n%s\n", cadena);
  16.  
  17.    fflush(stdin);
  18.    printf("\nPresiona Intro para finalizar...");
  19.    getchar();
  20. }
  21.  

De mayúscula a minuscula:

Código
  1. #include <stdio.h>
  2. #include <ctype.h>
  3.  
  4. int main()
  5. {
  6.   char cadena[50];
  7.   int i;
  8.  
  9.   printf("\nEscribe un letra o frase: ");
  10.   scanf("%s", &cadena);
  11.  
  12.   for(i = 0; cadena[i]; i++)
  13.      cadena[i] = tolower(cadena[i]);
  14.  
  15.   printf("\n%s\n", cadena);
  16.  
  17.    fflush(stdin);
  18.    printf("\nPresiona Intro para finalizar...");
  19.    getchar();
  20. }
  21.  

Espero que te sirva  ::) ::)

Saludos.
En línea

"La física es el sistema operativo del Universo"
     -- Steven R Garman
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: convertir minúscula a mayúscula
« Respuesta #3 en: 24 Febrero 2013, 22:04 pm »

Alguien sabe de alguna manera de convertir de minúscula a mayúscula sin la necesidad de rstarle - 32, es que tengo un problema que me pide que le ingrese una letra, si la letra es mayúscula lo dejo así, pero si la letra es minúscula tengo que hacer que el código me la reconozca como si ffuera mayúscula
.................................................................................


¿Qué problema tienes en restarle 32?. Si fuera una frase vale, pero para una letra es lo más cómodo, sin librerías ni funciones:

Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.  char ch;
  5.  printf("\nEscribe una letra: ");
  6.  ch=getchar ();
  7.  if (ch>97 || ch<122)
  8.  ch-=32;
  9.  printf("\n%c\n", ch);
  10.  return 0;
  11. }


Saluditos!.
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: convertir minúscula a mayúscula
« Respuesta #4 en: 25 Febrero 2013, 18:51 pm »

Algunos comentarios sobre la función:
Código
  1. bool SonLetras(const char* buf)
  2. {
  3. #define MAX_ALFA 53
  4. const char alfabetico[] = {
  5. 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
  6. 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',0};
  7. int ok=0;
  8. int len = strlen(buf);
  9. for(int i=0; i<len; i++){
  10. for(int j=0; j<MAX_ALFA; j++){
  11. if(buf[i]==alfabetico[j]){
  12. ok++;
  13. break;
  14. }}}
  15. if(ok==len) return true;
  16. return false;
  17. }

* No es una buena idea utilizar una macro como esta:
Código
  1. #define MAX_ALFA 53
Porque si nos equivocamos en la macro o en la lista de elementos del array la función ya no tendría el comportamiento esperado. Es mejor delegar la tarea al compilador utilizando el operador sizeof.

* No es necesario llamar a la función strlen ya que el final de la cadena se puede conocer al comparar al carácter siendo procesado con '\0'.

* Para evitar el condicional dentro del bucle interno se puede utilizar un centinela colocando el carácter a buscar en la ultima posición del array (la ocupada por el '\0').

* Si el objetivo es retornar verdadero solo si todos los caracteres son alfabéticos no se debe verificar toda la cadena una vez se encuentre un carácter que no cumpla esa condición.

Con los cambios:
Código
  1. bool SonLetras(const char *str)
  2. {
  3.   char abc[] = {
  4.      "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  5.      "abcdefghijklmnopqrstuvwxyz"
  6.   };
  7.   size_t num_chars = sizeof abc - 1;
  8.   size_t i;
  9.   size_t j;
  10.  
  11.   for (i = 0; str[i] != '\0'; i++){
  12.      abc[num_chars] = str[i];
  13.  
  14.      for (j = 0; abc[j] != str[i]; j++)
  15.         ;
  16.      if (j == num_chars)
  17.         return false;
  18.   }
  19.  
  20.   return true;
  21. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: convertir minúscula a mayúscula
« Respuesta #5 en: 25 Febrero 2013, 19:31 pm »

jugando con los
Código:
#define 
creo que podrías hacer algo como
Código:
#define A a
#define B b
#define C c

o algo así sin necesidad de mucho codigo.
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: convertir minúscula a mayúscula
« Respuesta #6 en: 25 Febrero 2013, 20:35 pm »

jugando con los
Código:
#define 
creo que podrías hacer algo como
Código:
#define A a
#define B b
#define C c

o algo así sin necesidad de mucho codigo.

 :laugh: :laugh: :laugh:Muy bueno eso de sin necesidad de mucho código Supongo que te ha pillado en un momento "espeso" querido Stakewinner00 . ;-) ;-) ;-)

Saluditos!.
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: convertir minúscula a mayúscula
« Respuesta #7 en: 25 Febrero 2013, 20:40 pm »

Son tan divertidos  ;-)
jugando con los
Código:
#define 
creo que podrías hacer algo como
Código:
#define A a
#define B b
#define C c

o algo así sin necesidad de mucho codigo.
En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: convertir minúscula a mayúscula
« Respuesta #8 en: 25 Febrero 2013, 21:07 pm »

Retiro todo lo dicho, ahora ya con la mente más lúcida vi que no puede funcionar (como mínimo de forma sencilla).
En línea

Josemanu90

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: convertir minúscula a mayúscula
« Respuesta #9 en: 24 Abril 2017, 12:12 pm »

si es solo una letra como seria?
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines