[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