Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: nolram en 16 Abril 2014, 08:40 am



Título: Mayusculas a minusculas problema c++
Publicado por: nolram en 16 Abril 2014, 08:40 am
buenas............
lo que pasa es que intento pasar un char a mayusculas pero el programa me tira un error:

Código:
#include <iostream>
using namespace std;

int main () {
   char c;
   do{
         cin >> c;
         if(c >= 'a' and c<='z') {
                       c -= 'a' - 'A';
                       cout << c;
        }
        else if(c >= 'A' and c<='Z'){
                       c -= 'A' - 'a';
                       cout << c;
         }
   }while(c!= 'p';   
   cout << endl;

funciona el problema es que cuando introduzco el octavo caracter el programa se vuelve loco y se cierra y no se por que;
alguien puede ayudarme a resolver esto.....
muchas gracias.....


Título: Re: Mayusculas a minusculas problema c++
Publicado por: x64core en 16 Abril 2014, 10:05 am
Código
  1.   char c;
  2.  
  3.   while((cin >> c), c != 'p')
  4.   {
  5.        if((c >= 'a') && (c <= 'z'))
  6.        {
  7.            c -= 'a' - 'A';
  8.            cout << c;
  9.        }
  10.        else if((c >= 'A') && (c <= 'Z'))
  11.        {
  12.            c -= 'A' - 'a';
  13.            cout << c;
  14.        }
  15.        cout << endl;
  16.    }
  17.  
  18.   cout << endl;


Título: Re: Mayusculas a minusculas problema c++
Publicado por: rir3760 en 16 Abril 2014, 15:13 pm
lo que pasa es que intento pasar un char a mayusculas pero el programa me tira un error
Lo mejor en tu caso es utilizar (por sencillo) las funciones tolower y toupper (prototipos en <cctype>).

En cuanto al programa esta incompleto (falta el final de la funcion main), falta el parentesis de cierre en el bucle while, al convertir el caracter a mayusculas/minusculas debes restar el primer operando y sumar el segundo. Por ultimo la condicion de la salida no la aclaras.

Si se trata de salir cuando el caracter sea 'p' o 'P' el bucle se debe cambiar a:
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main ()
  5. {
  6.   char c;
  7.  
  8.   do{
  9.      cin >> c;
  10.  
  11.      if (c >= 'a' and c<='z'){
  12.         c = c - 'a' + 'A';
  13.         cout << c;
  14.      }else if (c >= 'A' and c<='Z'){
  15.         c = c - 'A' + 'a';
  16.         cout << c;
  17.      }
  18.   }while (c != 'p' && c != 'P');
  19.   cout << endl;
  20.  
  21.   return 0;
  22. }

Un saludo


Título: Re: Mayusculas a minusculas problema c++
Publicado por: nolram en 16 Abril 2014, 19:59 pm
Gracias por las respuestas.......

Pero aun sigue sin funcionar..... pero descubri que el problema esta en el cin>>
ya que hice otro programa de prueba el cual le añadi un ciclo for:

Código:
char b;
for(int a =1; a<20; a++){
                   cin>>b;
                   cout<<b;
}

y cuando la a llega a 8 el ciclo se vuelve loco e imprime solo el resto hasta el llegar al 19;
pero no se por que.........
esty utilizando dev c++
MUCHAS GRACIAS POR LA ATENCION....   


Título: Re: Mayusculas a minusculas problema c++
Publicado por: nolasco281 en 17 Abril 2014, 00:01 am
Hola a mi me funcion con las correcciones que hizo rir3760 me andubieron perfecto no tube problema con 15 palabras que ingrese, sola faltaba unos saltos de linea, saludos.


Título: Re: Mayusculas a minusculas problema c++
Publicado por: nolram en 17 Abril 2014, 07:15 am
Pues amigo si a ti te funciono entonces estoy pensando seriamente que le problema esta en el dev c++;

por que la verdad lo he intentado varias veces y no funciona de ninguna manera simepre al ingresar el caracter 8 se cierra........   


Título: Re: Mayusculas a minusculas problema c++
Publicado por: nolasco281 en 17 Abril 2014, 09:36 am
Aca la prueba

(http://1.bp.blogspot.com/-5j7yXc5NHpg/U0-ECZrEPXI/AAAAAAAAAqc/SD7WUQzMJ9k/s1600/foro1.png)

Es raro que no te funcione. y como dige antes solo faltan algunos espacios.

Saludos.


Título: Re: Mayusculas a minusculas problema c++
Publicado por: x64core en 17 Abril 2014, 18:17 pm
Gracias por las respuestas.......

Pero aun sigue sin funcionar..... pero descubri que el problema esta en el cin>>
ya que hice otro programa de prueba el cual le añadi un ciclo for:

Código:
char b;
for(int a =1; a<20; a++){
                   cin>>b;
                   cout<<b;
}

y cuando la a llega a 8 el ciclo se vuelve loco e imprime solo el resto hasta el llegar al 19;
pero no se por que.........
esty utilizando dev c++
MUCHAS GRACIAS POR LA ATENCION....   
Tomando en cuenta que ese es todo el código:
Código:
char b;
for(int a =1; a<20; a++){
                   cin>>b;
                   cout<<b;
}
Probablemente debido a que estas ingresando más de un caracter como entrada, mira que a cin estas pasando una variable de tipo char no una cadena
así que cin tomara el siguiente character si existe en lugar de solicitar de nuevo una entrada del usuario. probablemente lo que necesitas es pasarle un
puntero a una cadena de caracteres.




Título: Re: Mayusculas a minusculas problema c++
Publicado por: rir3760 en 17 Abril 2014, 23:45 pm
estoy pensando seriamente que le problema esta en el dev c++;

por que la verdad lo he intentado varias veces y no funciona de ninguna manera simepre al ingresar el caracter 8 se cierra
Para ayudarte a resolver el problema que mencionas primero debes publicar el código fuente completo.

Un saludo