[C con Clase] Segmentation Fault a la hora de leer un archivo

Asdrúbal Iván Suárez Rivera asdrubal.ivan.suarez.rivera en gmail.com
Lun Abr 2 21:08:23 CEST 2012


2012/4/2 Steven Davidson <srd4121 en njit.edu>

> Hola Asdrúbal,
>
>
> On 4/2/2012 2:11 PM, Asdrúbal Iván Suárez Rivera wrote:
>
>>
>> Excelente, he resuelto mi problema. He visto en muchos códigos fuente
>> en donde existen funciones en las que se retorna una referencia. ¿A
>> qué se debe esto?
>>
>>
> Bueno, lo he mencionado en el correo-e anterior. Sirve para permitir
> "encadenar" invocaciones en una sola expresión. Por ejemplo,
>
> struct color
> {
>  float r,g,b;
> };
>
> color &color_combinar( color &res, const color &izq, const color &der,
> float fPorcentajeIzq )
> {
>  res.r = izq.r * fPorcentajeIzq + der.r * (1-fPorcentajeIzq);
>  res.g = izq.g * fPorcentajeIzq + der.g * (1-fPorcentajeIzq);
>  res.b = izq.b * fPorcentajeIzq + der.b * (1-fPorcentajeIzq);
>
>  return res;
> }
>
> color &color_exponencial( color &res, float fFactor )
> {
>  res.r *= fFactor;
>  res.g *= fFactor;
>  res.b *= fFactor;
>
>  return res;
> }
>
>
Al hacer el quicksort me sigue dando error, pareciera una recursión
infinita :( por la violación de segmento.

Mando el código para que vean.



> int main()
> {
>  color col = { 1, 0.5, 0 };
>  color gris = { 0.5, 0.5, 0.5 };
>
>  color res;
>  if( color_exponencial( color_combinar(res,col,gris,.**25), .1 ).r >
> col.r )
>    cout << "error" << endl;
>
>  return 0;
> }
>
> Si estas funciones no retornaren 'color &', entonces tendríamos que hacer
> cada invocación por separado. Esto es,
>
> void color_combinar( color &res, const color &izq, const color &der, float
> fPorcentajeIzq );
> void color_exponencial( color &res, float fFactor );
>
> int main()
> {
>  color col = { 1, 0.5, 0 };
>  color gris = { 0.5, 0.5, 0.5 };
>
>  color res;
>  color_combinar( res, col, gris, .25 );
>  color_exponencial( res, .1 );
>
>  if( res.r > col.r )
>    cout << "error" << endl;
>
>  return 0;
> }
>
> La ventaja de retornar el mismo objeto que estamso tratando, y que existe
> externamente, es que tenemos mayor flexibilidad. Podemos elegir invocar las
> funciones en una sola expresión, como en el primer ejemplo, o podemos
> elegir invocar cada función en diferentes sentencias, como en el segundo
> ejemplo. El problema de no retornar una referencia al mismo objeto es que
> sólo tenemos una opción: invocar cada función por separado, como en el
> segundo ejemplo.
>
>
>  Post Data: ¿Tienen un canal IRC?
>>
>>
> No; no tenemos uno. No sé si crearemos uno en el futuro o no.
>
>
> Espero haber aclarado el tema.
>
>
> Steven
>
>
> ______________________________**_________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/**mailman/listinfo/cconclase_**
> listas.conclase.net<http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net>
> Bajas: http://listas.conclase.net/**index.php?gid=2&mnu=FAQ<http://listas.conclase.net/index.php?gid=2&mnu=FAQ>
>



-- 
Asdrúbal Iván Suárez Rivera

*El éxito de alguien que enseña no es que sepa mucho, sino que lo poco que
sabe lo sepa hacer llegar.*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120402/c8e0ffb7/attachment.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: problema.zip
Type: application/zip
Size: 22886 bytes
Desc: no disponible
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120402/c8e0ffb7/attachment.zip>


Más información sobre la lista de distribución Cconclase