| |||
Problema con letras ?? Saludos colegas del foro , recien me acabo de registrar por que tengo una pregunta, ando iniciando en esto de la programacion y vengo de QBASIC 64 un IDE muy sencillo a si que quiero aprender mas , estoy aprendiendo C++ por ahora bueno para no alargar mucho esta es mi pregunta tengo el siguiente problema que es solo preguntar el oficio, edad nombre, y apellido de la persona pero cada vez que lo ejecuto me funciona hasta que inserto el nombre, aparece que el programa se ha detenido y se cierra alguien me podria decir que esta mal y por que se cierra el programa? #include <iostream> char * rep; char * rep2; char * rep3; using namespace std; int main (){ cout << "Introduzca su nombre "; cin >> rep; cout << "Introduzca su apellido "; cin >> rep2; cout << "Introduzca su ocupacion "; cin >> rep3; cout << "Tu nombre es:\n "; cout << rep ; cout << "Tu apellido es: "<< "\n"; cout << rep2 ; cout << "Tu oficio es: "; cout << rep3 ; cin.get(); return 0; } |
| |||
Respuesta: Problema con letras ?? Hola. Interesante eso del QBASIC 64 Bueno, con respecto a tu duda, quieres almacenar los valores en punteros char, y estos no tienen la capacidad de almacenar un valor char sino una dirección de memoria en la que se almacene un valor char. Los puedes usar para hacer una reserva de memoria y entonces, cuando tengas esa memoria disponible, poder alojar las cadenas de texto deseadas. Pero mejor no liarse con memoria dinámica por ahora y simplemente puedes usar arrays de char con un tamaño suficientemente grande como para poder alojar cualquier cadena que quieras introducir. Por otro lado, no tiene mucho sentido declarar los char como globales. Esto lo estás haciendo al declararlas fuera de main(). Y por último, verás que el método cin te fallará al introducir cadenas con espacios, y te contará cada cadena separada como espacio como una cadena aparte. Es decir, si pones nombre = Jose Luis, tomará Jose como nombre y Luis como apellido, y directamente pasará a preguntarte la ocupación. Usa cin.getline para solventar esto
Código C++:
Ver original
__________________ Mi calculadora en Qt |
| |||
Respuesta: Problema con letras ?? Si ya me funciona de maravilla x) aunque el cin.getline me da error al final xD cuando quisiera imprimir un nombre completo digamos Tu nombre es: Juancho Fernando Tu apellido es: Caceres Bolivar me aparece como el error anterior xd Pero me diste un gran avance :), Gracias! |
| |||
Respuesta: Problema con letras ?? El error podría ser por el largo de la linea. Lo que propuso dehm fue almacenar el texto como una cadena limitada o un array de chars, un char es un carácter las variables que declaro son solo para el numero de caracteres máximo del array que en este caso son 20, 50 y 30 lo que te recomiendo es aumentar el largo de cada uno de los arrays por ejemplo cada uno a 100 para que no ocurra un error. |
| |||
Respuesta: Problema con letras ?? Buenas ya encontre la solucion :DD , lo encontre pero de una forma diferente, aunque gracias a sus colaboraciones es que pude llegar a la respuesta. Miren como lo hice : #include <iostream> #include <string> using namespace std; int main () { string Nombre; string Apellido; string Oficio; cout << "Nombre: " ; getline(cin, Nombre); cout << "Apellido: "; getline(cin, Apellido); cout << "Ocupacion: " ; getline(cin, Oficio); cout << "Tu nombre es: " << Nombre << endl; cout << "Tu apellido es: " << Apellido << endl; cout << "Tu ocupacion es: " << Oficio << endl; return 0; } Ahora si me devuelve con todo y espacio ! |
| |||
Respuesta: Problema con letras ?? Hola, está bien la solución, pero te dejo el código de cómo quedaría con arrays de char, por si quieres ver dónde estaba tu problema:
Código C++:
Ver original Saludos!
__________________ Mi calculadora en Qt |
Etiquetas: |