Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Pasar a Mayusculas

Estas en el tema de Pasar a Mayusculas en el foro de C/C++ en Foros del Web. Hola, pues me da el siguiente error el Dev-C++: invalid operands of types `bool' and `char*' to binary `operator*' Y este es el codigo: Código: ...
  #1 (permalink)  
Antiguo 07/02/2009, 09:23
 
Fecha de Ingreso: octubre-2008
Mensajes: 32
Antigüedad: 15 años, 6 meses
Puntos: 0
Pasar a Mayusculas

Hola, pues me da el siguiente error el Dev-C++:
invalid operands of types `bool' and `char*' to binary `operator*'

Y este es el codigo:
Código:
void PasaaMayus(char *cad)
{
   while (*cad!='\0')
   {
     if ((*cad>'a')&&(*cad<'z') 
        *cad=(*cad)-32;
   cad++;
   } 
}
Estoy utilizando C, y con array seria algo asi como cad[i]=cad[i]-32, pero con punteros no se muy bien como hacerlo...

Desde ya, gracias :D
  #2 (permalink)  
Antiguo 09/02/2009, 17:04
 
Fecha de Ingreso: febrero-2009
Mensajes: 5
Antigüedad: 15 años, 2 meses
Puntos: 0
Información Respuesta: Pasar a Mayusculas

te recuerdo que una variable del tipo char en una funcion se trata de la misma manera que un vector, y no como una variable.
una variable se envia & y se recive con *, indireccion y puntero a direccion pero dentro de la funcion deveremos usar *<variable> cada ves que nos referimos a este.
un char o vector se envia simplemente y se recibe con puntero no necesitas hacer *<variable> cada ves que haces referencia a la variable
lee un poco mas hacerca de envio de vectores a funciones

Última edición por lafuente_pablo; 09/02/2009 a las 17:17
  #3 (permalink)  
Antiguo 09/02/2009, 19:53
Avatar de cesmichael  
Fecha de Ingreso: julio-2008
Mensajes: 207
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Pasar a Mayusculas

en primer lugar lo que quieras transformar en mayuscula es una cadena de caracteres no. si esta utilizando punteros es porque la cadena que vas a utilizar es una vector dinamico. Es decir se crea en tiempo de ejecucion, no sabes el tiempo del vector por eso lo creas en tiempo de ejecucion. entonces creo que deberia ser asi:

Código:
void PasaaMayus(char *cad)
{
   while (cad[i]!='\0')
   {
     if ((cad[i]>'a')&&(cad[i]<'z') 
        cad[i+=cad[i]-32;
     i++;
   } 
}
ahora si lo quieres con solo punteros sin utilizar eso de "[i]", creo que seria asi:

Código:
void PasaaMayus(char *cad)
{
   while (cad!='\0')
   {
     if ((cad>(int)'a')&&(cad<(int)'z') 
        (*cad)=(*cad)-32;
   cad++;
   } 
}

Te confieso que aun no lo he probado, solo he empleado ms conocimientos teoricos, si no te funciona lo avisas. espero havberte ayudado
  #4 (permalink)  
Antiguo 11/02/2009, 04:07
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Pasar a Mayusculas

Tik3r ibas perfectamente encaminado, simplemente tenes dos problemas con la comparacion que esta mal formulada:

A. Le falta cerrar parentesis.
B. No incluye ni 'a' ni 'z'.

Por lo tanto asi quedaria correcta:
Código:
void PasaaMayus(char *cad)
{
   while (*cad!='\0')
   {
	if ((*cad>='a')&&(*cad<='z')) 
          *cad = (*cad) - 32; //*cad -= 32;
       cad++;
   } 
}
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:19.