Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Littlehorse

#321
Programación C/C++ / Ayuda con un programa
16 Noviembre 2010, 22:44 PM
El mensaje 'Ayuda con un programa' fue bloqueado
Bienvenido/a al foro XV8. En esta sección no se hacen tareas!
Leer reglas:
http://foro.elhacker.net/reglas
#322
Postea el código completo (en lo posible en pastebin).

A simple vista, los errores podrian provenir del mal uso de scanf.
Al hacer esto:

scanf("%d", &n);


En el buffer de entrada quedan datos (como el salto de linea, por ejemplo) que son leidos en la proxima lectura.

Luego, también hay otras cosas, como por ejemplo esto:

      do{
                 scanf("%c", &alumno.nombre[j]);
                 j++;
              }while (alumno.nombre[j-1] != ':' && j-1 < 20);


Una manera poco eficiente e insegura de leer un nombre. Te recomiendo que utilices fgets con stdin + sscanf.

Por ejemplo:

fgets (buff , size , stdin);
//Chequeas que la cadena este terminada en NULL y lo agregas en caso de ser necesario
//Procesas el buffer, por ejemplo para eliminar datos que no necesitas u caracteres invalidos
strncpy(_struct.nombre, buff, size); //Copias la cadena.


Podes hacer algo similar para otros tipos de datos:

fgets(buff, size, stdin);
//Procesas el buffer, por ejemplo para eliminar datos que no necesitas u caracteres invalidos
sscanf(buff, "%d", &varint);


Por supuesto en todos los casos también podes chequear valores de retorno de cada función para evitar posibles errores.

Saludos!
#323
Hola alexis33de. En esta sección no se hacen tareas.

Si tenes la teoría, que te impide implementar las estructuras? si tenes dudas puntuales al respecto las podemos ver pero si buscas código hecho te equivocaste de sección.

Igualmente buscando en Google aparecen varias:

Quadtree C++

Saludos
#324
A mi me sucede desde esta fecha.

Al principio solo me sucedía en Firefox (con Cake y https) y no me sucedía en Chrome. Pero cuando active cake en Chrome, comenzó a pasar allí también. Sin forzar https no debería suceder, o por lo menos en mi caso por lo que estuve probando no lo hace.

Saludos!




#325
 De nada Akai!
Pensaba que los profesores te habían entregado el código completo. Igualmente mas allá de la implementación que hayas realizado, el problema principal esta en la base del código al no contemplar situaciones como las mencionadas.

Luego cuentas a ver que te dicen.

Saludos!


#326
Cita de: do-while en 16 Noviembre 2010, 06:01 AM
¡Buenas!

Una vez puestos los enlaces a la aplicacion y al codigo, ¿se podran actualizar hasta el ultimo dia?, lo digo porque no se como ire de tiempo para terminar con todo, realizar pruebas, escribir algo de documentacion, un tutorial sencillo sobre el funcionamiento...

¡Saludos!

Como dice Castiblanco, lo mejor en esos casos es publicar la aplicacion el ultimo día así puedes tener el tiempo de publicarla como gustes.  :D
#327
Te sirve esto?
#328
CitarHe probado a compilarlo con g++ en vez de con MinGw en code::blocks (windows) y ahora si me da el mismo error que a ti. Ahora supongo que ya se trata de un error del código que he añadido yo. ¿Problema de code::blocks?

Realmente lo dudo mucho pero tampoco sabría decirte ya que no utilizo MinGw.

Lo probé en Visual C++ y el error es exactamente el mismo:

Citarimage.cpp(42): error C3848: expression having type 'const ImageColor' would lose some const-volatile qualifiers in order to call 'Pixel &ImageColor::operator ()(int,int)'

Remover el const de la definición y de la declaración de la referencia utilizada "solucionaría" el problema, pero pongo las comillas debido a que si el código te fue entregado de esa manera, habría que analizar el caso para verificar si el const es necesario o no.

Edit:
Mirando un poco el código, el problema radica aquí:

Código (cpp) [Seleccionar]
ImageColor::ImageColor(const ImageColor &der)

Tenes un parámetro const, por tanto, implica que no es modificable.

Ahora bien, en la definición de la sobrecarga de operadores tenes esto:

Código (cpp) [Seleccionar]

Pixel& ImageColor::operator()(int row ,int col){
 return data[coord2index(row,col)];
}


Lo cual es lo mismo que afirmar que dicha sobrecarga podría ocasionar cierta modificación, algo que obviamente no solo no se hace en la definición si no que no se debería dado el grado de const que tiene la referencia desde cual se lo utiliza en primera instancia. Produciendo así, un error en tiempo de compilación.

La solución, seria garantizar que dicho método no va a modificar un objeto no modificable (niveles de const) declarándolo y definiendo de esta manera:

Código (cpp) [Seleccionar]
Pixel& operator()(int row , int col)const;

aunque otra solución seria simplemente no usar una referencia const en primera instancia, pero para eso habría que ver el código en mas profundidad para ver que hacen los otros métodos.

Igualmente te recomendaría que también le plantees la misma pregunta a tus profesores, ya que posiblemente no seas el único con esta duda.

Saludos!
#329
Autoruns la muestra  ;D
#330
No he visto el código completo pero ten en cuenta que si tenes un miembro/objeto constante tenes que estar seguro que a lo largo de la ejecución del programa eso no va a cambiar, de lo contrario vas a tener errores de este estilo en tiempo de compilación (Precisamente una de las ventajas de utilizar o no utilizar "const" en determinados casos).

Igualmente he compilado el proyecto a ver si obtenía los mismos errores que vos, pero no :

Citar
image.cpp|42|error: passing `const ImageColor' as `this' argument of `Pixel& ImageColor::operator()(int, int)' discards qualifiers
Así que estoy casi seguro que es lo que mencione al principio. Luego cuando llegue a casa reviso el codigo con mas tiempo y cualquier cosa edito.

Saludos!