Cita:
Iniciado por Srgy - ¿Que diferencias tengo entre declarar la variable "localidad" como char o char*. Lo digo porque sustituyendo...
Código:
if((localidad[z] == lista[i].ciudad[z])||(localidad[z] == lista[i].ciudad2[z]))
teniendo declarada como char, por la función srtcmp me da error en compilación. Si cambio la declaración a char* entonces me da error la lectura con el
El tipo char únicamente permite almacenar un carácter (8 bits con signo), mientras que el tipo char* es un array de tipo char, lo que te permite almacenar un número indeterminado de caracteres.
La firma de
strcmp, tal y como puedes consultar por ejemplo
aquí, indica que esta función espera recibir dos punteros a
char, es decir, dos
char*. Si esta función recibe cualqueir otro tipo de dato, te arrojará un error.
La firma de
gets, como puedes consultar
aquí, también espera recibir un
char*, por lo que no termino de entender ese error que comentas.
Cita:
Iniciado por Srgy Otra cosa es que cuando hago la limpieza del búfer
hay que presionar dos veces enter para que tome el valor, lo cual puede llevar al usuario a no saber esto y creer que el programa se ha "colgado".
Código:
system("cls");
cout<<"Introduce nombre de localidad\n";
cin.ignore(256,'\n');
gets(localidad);
Así, al abrir el programa, en la primera selección del switch (1 o 2), tengo que hacer lo siguiente...
-pulso 1 (por ejemplo) y enter . El programa no hace nada.
-Vuelvo a pulsar 1 y enter. El programa entra en el case 1.
He tenido, por tanto, que hacer dos veces esa operación de selección, lo cual no deja de ser algo raro.
El problema aquí es que cin.ignore va a eliminar todo lo que haya en el buffer hasta que se encuentre un salto de línea... si no encuentra el salto de línea y el contenido del buffer no supera los 256 caracteres, cin se quedará esperando a que introduzcas más caracteres hasta completar uno de los dos requisitos.
Una opción más limpia para limpiar el buffer (lo siento, ayer escribí con prisas y me la salté) es usar cin.clear():
Código:
system("cls");
cout<<"Introduce nombre de localidad\n";
cin.clear();
gets(localidad);
Cita:
Iniciado por Srgy Respecto a lo de las clases, aún no he entrado en eso. Me está costando algo entender el concepto de clase de C++. Ví algo de C en su día, y esto me pilla de nuevas. Pero vamos, que asumo que este programa sería mucho más sencillo de realizar mediante el uso de clases. Todo llegará.
Cada persona tiene su propia curva de aprendizaje. No te agobies :)
Cita:
Iniciado por Srgy Disculpa por el asedio de dudas y de nuevo mil gracias, con estos consejos voy empezando a tener claras algunas cosas.
Si no fuese para ayudar, no tendría sentido que estuviese en este foro.
Un saludo