[C con Clase] AYUDA URGENTE POR FAVOR!!!
Davidson, Steven
srd4121 en njit.edu
Mar Ene 29 01:36:16 CET 2013
Hola Sara,
2013/1/28 Sara Castilla Guilllén <saricg en hotmail.es>
> Hola, gracias por la información. He solucionado los errores de los que
> me habeis informado y corregido algunos más que me daban a la hora de
> compilar. Todavía me siguen saliendo estos errores (los adjunto en un
> archivo) y por más que cambio cosas no consigo solucionarlos. Adjunto de
> nuevo el programa para que podais verlo. Gracias de nuevo.
>
>
Bueno, no es cuestión de cambiar algo para que funcione, sino entender el
problema - el por qué no funciona - y resolverlo.
Veamos los errores y el código fuente:
* error: #error This file requires compiler and library support for the
upcoming ISO C++ standard, C++0x. This support is currently experimental,
and must be enabled with the -std=c++0x or -std=gnu++0x compiler options.
Como usas algunas cosas del nuevo estándar de C++, llamado previamente
C++0x, pero ahora se llama C++11, tu compilador requiere que agregues la
opción del compilador: -std=c++0x. Cuando compiles, algunos otros errores
que mencionas desaprecerán.
* pr2.cpp:21: error: expected ‘;’ before ‘char’
struct TpInfopeli{
char protagonistas[10]
---->
El error está en que espera un punto y coma antes del 'char' siguiente. O
sea, escribe:
char protagonistas[10];
<----
char pelicula[5];
char cines[4];
}informacion[5];
* pr2.cpp:50: error: ‘i’ no se declaró en este ámbito
...
void InsertarPelicula(string TpCines[i], TpInfopeli &informacion);
El problema es que indicas 'i', la cual no ha sido declarada y por tanto el
compilador no sabe lo qué es, ni cómo tratarlo. Como está en la lista de
parámetros, debe ser solamente [], para crear un array.
* pr2.cpp:52: error: ‘i’ no se declaró en este ámbito
...
void BuscarPelicula (string TpCines[i], const string &pelicula, bool
&encontrado, TpInfopeli &informacion);
Aquí tienes el mismo problema de antes; escribe, [].
* pr2.cpp:81: error: expected primary-expression before ‘&’ token
case 0: informacion = LeerPelicula(TpInfopeli &informacion);
El error es que has escrito el prototipo de la función 'LeerPelicula()', en
lugar de invocarla. Debería haber sido,
case 0: informacion = LeerPelicula( informacion );
Sin embargo, esta función retorna un valor de tipo 'int' que intentas
asignar a una variable de tipo 'TpInfopeli'. Como no existe una definición
de asignar 'int' a 'TpInfopeli', se produce un error. Deberías revisar la
lógica que quieres plasmar aquí.
* pr2.cpp:82: error: no se puede pasar objetos de tipo ‘struct std::string’
que no es POD a través de ‘...’; la llamada abortará en tiempo de ejecución
...
InsertarPelicula(TpCines, informacion);
BuscarPelicula(TpCines, pelicula, encontrado, informacion);
Pasas 'TpCines' que es un objeto de tipo 'string' a ambas funciones cuando
esperan recibir arrays. Revisa lo que quieres hacer en realidad: pasar una
lista de cadenas o una sola cadena.
* pr2.cpp:100: error: ‘salir’ no se declaró en este ámbito
SalirDelPrograma(salir);
No has definido 'salir' y por tanto es un error usarlo.
* pr2.cpp:122: error: expected primary-expression before ‘;’ token
cin >> calificaciones;
'calificaciones' no es una variable sino un tipo enumerado. Deberías
aceptar otra variable como parámetro o podrías definir 'TpInfopeli' para
que contenga otro campo para las calificaciones.
* pr2.cpp:124: error: no se puede convertir ‘TpInfopeli’ a ‘int’ en return
return informacion;
Intentas retornar 'informacion' que es de tipo 'TpInfopeli' cuando dijiste
que iba a retornar un valor de tipo 'int'. Como no existe una conversión
entre 'TpInfopeli' a 'int', el compilador te marca un error.
Hay varios errores que no has corregido de la versión anterior del código
fuente.
Espero que esto te sirva.
Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130128/e1a880f5/attachment.html>
Más información sobre la lista de distribución Cconclase