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

[SOLUCIONADO] Problema con letras ??

Estas en el tema de Problema con letras ?? en el foro de C/C++ en Foros del Web. Saludos colegas del foro , recien me acabo de registrar por que tengo una pregunta, ando iniciando en esto de la programacion y vengo de ...
  #1 (permalink)  
Antiguo 08/12/2015, 19:42
 
Fecha de Ingreso: diciembre-2015
Mensajes: 5
Antigüedad: 9 años
Puntos: 0
Pregunta 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;

}
  #2 (permalink)  
Antiguo 09/12/2015, 02:46
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años, 2 meses
Puntos: 10
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
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main ()
  5. {
  6.     char  rep[20];
  7.     char  rep2[50];
  8.     char rep3[30];
  9.     cout << "Introduzca su nombre ";
  10.     cin >> rep;
  11.     cout << "Introduzca su apellido ";
  12.     cin >> rep2;
  13.     cout << "Introduzca su ocupacion ";
  14.     cin >> rep3;
  15.     cout << "Tu nombre es:\n ";
  16.     cout << rep ;
  17.     cout << "Tu apellido es: "<< "\n";
  18.     cout << rep2 ;
  19.     cout << "Tu oficio es: ";
  20.     cout << rep3 ;
  21.  
  22.     cin.get();
  23.     return 0;
  24. }
__________________
Mi calculadora en Qt
  #3 (permalink)  
Antiguo 09/12/2015, 12:31
 
Fecha de Ingreso: diciembre-2015
Mensajes: 5
Antigüedad: 9 años
Puntos: 0
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!
  #4 (permalink)  
Antiguo 09/12/2015, 16:32
 
Fecha de Ingreso: diciembre-2015
Mensajes: 67
Antigüedad: 9 años
Puntos: 2
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.
  #5 (permalink)  
Antiguo 13/12/2015, 08:16
 
Fecha de Ingreso: diciembre-2015
Mensajes: 5
Antigüedad: 9 años
Puntos: 0
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 !
  #6 (permalink)  
Antiguo 13/12/2015, 14:59
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años, 2 meses
Puntos: 10
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
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main ()
  5. {
  6.     char  rep[50];
  7.     char  rep2[50];
  8.     char rep3[50];
  9.     cout << "Introduzca su nombre ";
  10.     cin.getline(rep, 50, '\n');
  11.     cout << "Introduzca su apellido ";
  12.     cin.getline(rep2, 50, '\n');
  13.     cout << "Introduzca su ocupacion ";
  14.     cin.getline(rep3, 50, '\n');
  15.     cout << "Tu nombre es: ";
  16.     cout << rep <<endl;
  17.     cout << "Tu apellido es: ";
  18.     cout << rep2 <<endl;
  19.     cout << "Tu oficio es: ";
  20.     cout << rep3 <<endl;
  21.  
  22.     cin.get();
  23.     return 0;
  24. }

Saludos!
__________________
Mi calculadora en Qt

Etiquetas: char, funcion, int, letras, programa
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

SíEste tema le ha gustado a 1 personas




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