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

C++, programa de minusculas a mayusculas y viceversa

Estas en el tema de C++, programa de minusculas a mayusculas y viceversa en el foro de C/C++ en Foros del Web. Hola, Hace poco empece a programar por primera vez en C++ en las clases de la universidad, nunca había hecho nada parecido, tenemos que hacer ...
  #1 (permalink)  
Antiguo 26/09/2009, 06:48
 
Fecha de Ingreso: septiembre-2009
Mensajes: 5
Antigüedad: 14 años, 7 meses
Puntos: 0
C++, programa de minusculas a mayusculas y viceversa

Hola,
Hace poco empece a programar por primera vez en C++ en las clases de la universidad, nunca había hecho nada parecido, tenemos que hacer unos ejercicios de introducción pero en este que es de convertir de mayúsculas a minúsculas y al revés tengo un problema, y es que no me sale. Aquí os dejo el código para que le deis un vistazo, pero no quiero que me deis la solución solo pistas que sino no aprendo. El problema es que no se que poner despues de los cout.

Gracias

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

int main () {
    char c;
    cin >> c;
        if (c >='a'and c<='z') cout <<   ;
        else cout <<  ;
        cout << endl;
}
  #2 (permalink)  
Antiguo 26/09/2009, 11:01
Avatar de r0d
r0d
 
Fecha de Ingreso: noviembre-2007
Mensajes: 86
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: C++, programa de minusculas a mayusculas y viceversa

hola david91,

la función que necesitaras, es toupper( int c ), definida en cctype (#include <cctype>).
  #3 (permalink)  
Antiguo 26/09/2009, 11:04
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: C++, programa de minusculas a mayusculas y viceversa

En c++ existen funciones que hacen lo que quieres, estas son toupper() //convierte a matuscula
y tolower() // convierte a minuscula, Ejemplo:

Código c++:
Ver original
  1. #include <stdio.h>
  2. #include <ctype.h> //<---aqui se encuentran las funciones toupper y tolower
  3. #include <conio.h>
  4.  
  5. int main()
  6. {
  7.    char cadena[] = "Ejemplo";
  8.    int i;
  9.  
  10.    for(i = 0; cadena[i]; i++)
  11.       cadena[i] = tolower(cadena[i]); //<--convierte a minusculas
  12.  
  13.    printf("%s\n", cadena); //<---muestra  la cadena
  14.    getch();
  15.    return 0;
  16. }
  #4 (permalink)  
Antiguo 26/09/2009, 11:36
 
Fecha de Ingreso: septiembre-2009
Mensajes: 5
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: C++, programa de minusculas a mayusculas y viceversa

Cita:
Iniciado por r0d Ver Mensaje
hola david91,

la función que necesitaras, es toupper( int c ), definida en cctype (#include <cctype>).
Gracias por responder.

Pero con el codigo que he insertado y sin tener que añadir el toupper ni el cctype, no hay manera posible de hacerlo?
El programa convierte una letra a minuscula/mayuscula segun sea.
Ejemplo: A --> a, b --> B

no se si me explico
  #5 (permalink)  
Antiguo 26/09/2009, 13:06
Avatar de r0d
r0d
 
Fecha de Ingreso: noviembre-2007
Mensajes: 86
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: C++, programa de minusculas a mayusculas y viceversa

Si no quieres incluir nada, tienes que hacer unas trampas. Fijate el codigo siguiente:
Código:
#include <string>
#include <algorithm>
#include <iostream>

using namespace std;

struct ToUpper {
	char operator () ( char c ) { return (char) ( ( int ) c ) - 32; } // eso es la trampa
};

int main()
{
	string str;
	cin >> str;
	transform( str.begin(), str.end(), str.begin(), ToUpper() );
	cout << str << endl;

	cin.get();
	cout << endl << "end" << endl;
	cin.get();

	return 0;
}
Este codigo hace lo que quieres, pero usando <string> y <algorithm>. Si tu no quieres la STL, tendras que cambiarlo. Pero aqui esta la trampa, en la linea indicada. Si entiendes lo que hace este codigo, ya podras adaptarlo a tus requisitos.
Un indice mas:
(int) 'a' = 97
(int) 'A' = 65


@mhax: tu codigo no es C++, es C puro.
  #6 (permalink)  
Antiguo 26/09/2009, 14:41
 
Fecha de Ingreso: septiembre-2009
Mensajes: 56
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: C++, programa de minusculas a mayusculas y viceversa

que tal David91, la solución a lo que usted quiere sería algo así:

Las mayúsculas son los caracteres ascii que van del 65(A) al 90(Z), las minúsculas van del 97(a) al 122(z). Entonces:

Código c:
Ver original
  1. if(c >= 'a' && c<='z'){
  2. //o dicho de otra forma
  3. //if(c >= 97 && c<= 122){
  4.  
  5.  
  6.    c -= 32;
  7.    //o dicho de otra forma
  8.    //c -= 'a' - 'A';
  9. }

Hasta ahí lo dejo para que usted termine la segunda parte, de mayúsculas a minúsculas.
Saludos.
  #7 (permalink)  
Antiguo 27/09/2009, 05:35
 
Fecha de Ingreso: septiembre-2009
Mensajes: 5
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: C++, programa de minusculas a mayusculas y viceversa

Cita:
Iniciado por joticajulian Ver Mensaje
que tal David91, la solución a lo que usted quiere sería algo así:

Las mayúsculas son los caracteres ascii que van del 65(A) al 90(Z), las minúsculas van del 97(a) al 122(z). Entonces:

Código c:
Ver original
  1. if(c >= 'a' && c<='z'){
  2. //o dicho de otra forma
  3. //if(c >= 97 && c<= 122){
  4.  
  5.  
  6.    c -= 32;
  7.    //o dicho de otra forma
  8.    //c -= 'a' - 'A';
  9. }

Hasta ahí lo dejo para que usted termine la segunda parte, de mayúsculas a minúsculas.
Saludos.



Gracias, este codigo se acerca más a lo que yo quiero, ahora ya lo he acabado, pero al compilar salen errores cuando pongo c -= 'a'.....

Aqui el codigo acabado segun la recomendacion de "joticajulian"
Código HTML:
#include <iostream>
using namespace std;

int main () {
    char c;
    cin >> c;
        if(c >= 'a' and c<='z') {
            cout << c -= 'a' - 'A'; }
            else if(c >= 'A' and c<='Z'){
            cout << c -= 'A' - 'a'; }
        cout << endl; 
}
  #8 (permalink)  
Antiguo 27/09/2009, 10:23
 
Fecha de Ingreso: septiembre-2009
Mensajes: 56
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: C++, programa de minusculas a mayusculas y viceversa

Lo que sucede es que en el cout no se puede colocar la operación de resta, entonces, primero se opera la "c" y luego se imprime con cout.
Código c++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main () {
  5.     char c;
  6.     cin >> c;
  7.     if(c >= 'a' and c<='z') {
  8.         c -= 'a' - 'A';
  9.         cout << c;
  10.     }else if(c >= 'A' and c<='Z'){
  11.         c -= 'A' - 'a';
  12.         cout << c;
  13.     }
  14.     cout << endl;
  15.     return 0;
  16. }
  #9 (permalink)  
Antiguo 27/09/2009, 13:38
 
Fecha de Ingreso: septiembre-2009
Mensajes: 5
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: C++, programa de minusculas a mayusculas y viceversa

Cita:
Iniciado por joticajulian Ver Mensaje
Lo que sucede es que en el cout no se puede colocar la operación de resta, entonces, primero se opera la "c" y luego se imprime con cout.
Código c++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main () {
  5.     char c;
  6.     cin >> c;
  7.     if(c >= 'a' and c<='z') {
  8.         c -= 'a' - 'A';
  9.         cout << c;
  10.     }else if(c >= 'A' and c<='Z'){
  11.         c -= 'A' - 'a';
  12.         cout << c;
  13.     }
  14.     cout << endl;
  15.     return 0;
  16. }
Muchas gracias, ahora si que funciona el problema estaba en cout y todo esto de las restas. A ver si así me lo aceptan.
  #10 (permalink)  
Antiguo 27/09/2009, 19:48
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: C++, programa de minusculas a mayusculas y viceversa

Tienes razon Rod, disculpen, el codigo es c puro
  #11 (permalink)  
Antiguo 30/09/2009, 03:50
 
Fecha de Ingreso: septiembre-2009
Mensajes: 5
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: C++, programa de minusculas a mayusculas y viceversa

Sí ya ha funcionado y me lo han aceptado, muchas gracias a todos, a ver si me vuelvo menos torpe y tengo que preguntar menos, aqui el codigo por si alguien tiene la misma duda:

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

int main () {
   char c;
   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;
   }
   cout << endl;
}
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:46.