<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
Tengo un problema con unos punteros, cuando mandoa  llamar la funcion de Leer(Cilindro &RefCil) esta manda a llamar a Leer(Circulo &RefC) pasandole como parametro el puntero Circulo  de la estructura de Cilindro y esta funsion a su ves llama a Leer(Punto &RefP) pasandole como parametro el puntero Punto de la estructura de Circulo.<br><br>El problema es que al leer los valores de punto y regresar a Leer(Circulo &RefC) los valores de punto se mantienen, pero al regresar a Leer(Cilindro &RefCil) los valores que tenia la estructura de Punto ya no contienen valores, les pongo el programa que estoy realizando, de ante mano muchas gracias!!!!<br><br><br><br>////////////////////////////////////////////////////////////////////////////////<br><br>#include <iostream>                 //Para cout y cin<br>#include <conio.h>                 //Para getch()  y clrscr() ó ystem ("cls")<br>#include <iomanip>                 //Para setfill() y setw()<br>#include <stdio.h>                 //Para gets()<br>#include <math.h>                //Para M_PI<br><br>using namespace std;<br><br>struct Punto<br>       {<br>                float coordx;<br>                float coordy;<br>       };                        //fin de struct punto<br><br>struct Circulo<br>       {<br>                Punto *AptP;<br>                float Radio;<br>                float Diametro;<br>                float Perimetro;<br>                float Area;<br>       };                        //fin de struct circulo<br>       <br>struct Cilindro<br>       {<br>                Circulo *AptC;<br>                float Altura;<br>       };                        //fin de struct cilindro<br><br>                                 //prototipos del punto<br>void Leer (Punto &RefP);<br>void Imprimir (Punto &RefP);<br><br>                                 //prototipos del circulo<br>void Leer (Circulo &RefC);<br>float Diametro (const Circulo &RefC);<br>float Perimetro (const Circulo &RefC);<br>float Area (const Circulo &RefC);<br>void Imprimir ( Circulo &RefC);<br><br>                                  //prototipos del cilindro<br>void Leer (Cilindro &RefCil);<br>float Arealateral (const Cilindro &RefCil);<br>float Volumen (const Cilindro &RefCil);<br>void Imprimir (Cilindro &RefCil);<br><br>int main (void)<br>    {<br>        //clrscr();<br>        system ("cls");<br>        Cilindro Cil;<br>        Leer (Cil);<br>        cout << Cil.AptC->AptP->coordx << Cil.AptC->AptP->coordy;<br>                <br>        cout.setf (ios::fixed);<br>        cout.setf (ios::showpoint);<br>        cout.precision (2);<br>                <br>        Imprimir (Cil);<br>        getch();<br>        return 0;<br>    }                           //fin de main ()<br>       <br>void Leer (Punto &RefP)<br>    {<br>        cout << "\tDATOS DEL PUNTO\n"<br>             << "\tIngresa la coordenada de X: ";<br>        cin  >> RefP.coordx;<br>        cout << "\tIngresa la coordenada de Y: ";<br>        cin  >> RefP.coordy;<br>        cout << endl;<br>    }                            //fin de leer ()<br>     <br>void Imprimir (Punto &RefP)<br>    {<br>        cout << "\tLas coordenadas del punto son: ["<br>             << RefP.coordx << "," << RefP.coordy << "]" << endl << endl;<br>    }                               //fin de imprimir ()<br>     <br>void Leer (Circulo &RefC)<br>    {<br>        Punto P;<br>        RefC.AptP=&P;<br>        Leer (P);<br>        //cout << P.coordx << P.coordy;<br>        cout <<"***" <<  RefC.AptP->coordx << RefC.AptP->coordy;<br>        cout <<"***" <<  P.coordx << P.coordy;<br>        cout << "\tDATOS DEL CIRCULO\n"<br>             << "\tIngresa el radio del circulo : " ;<br>        cin  >> RefC.Radio;<br>    }                               //fin de leer()<br>       <br>float Diametro (const Circulo &RefC)<br>    { <br>               //cout << RefC.Radio;<br>        return (RefC.Radio * 2.0);<br>    }                             //fin de diametro()<br>       <br>float Perimetro(const Circulo &RefC)<br>    {<br>                     // cout << Diametro (R3efC);<br>        return (M_PI * Diametro(RefC));<br>    }                             //fin de perimetro()<br>       <br>float Area (const Circulo &RefC)<br>    {<br>           //cout << RefC.Radio;<br>        return(M_PI * pow(RefC.Radio,2.0));<br>    }                             //fin de area()<br>       <br>void Imprimir (Circulo &RefC)<br>    {<br>        cout << "VALORES DEL CILINDRO" << endl << endl; <br>        Imprimir (*RefC.AptP);<br>        cout << "\tLOS VALORES DEL CIRCULO SON\n" <br>             << "\tRadio        = " << RefC.Radio << endl<br>             << "\tDiametro     = " << Diametro (RefC) << endl<br>             << "\tPerimetro    = " << Perimetro (RefC) << endl<br>             << "\tArea         = " << Area (RefC) << endl << endl;<br>    }                             //fin de imprimir()<br><br>void Leer (Cilindro &RefCil)<br>    {<br>        cout << "DATOS DEL CILINDRO\n" << endl;<br>        Circulo C;<br>        RefCil.AptC=&C;<br>        Leer (C);<br>        cout << "->>>>>>>" << C.AptP->coordx << endl;<br>        cout << "\tIngresa el valor de la altura: ";<br>        cin  >> RefCil.Altura;<br>        cout << endl;<br>        cout << "->" <<RefCil.AptC->Radio << endl ;<br>        <br>    }<br><br>float Arealateral (const Cilindro &RefCil)<br>    {<br>    <br>        //cout<< RefCil.Altura << endl<br>        //<< Perimetro (*RefCil.AptC)<< endl;<br>        return (Perimetro(*RefCil.AptC) * RefCil.Altura);<br>        <br>    }                             //fin de arealateral()<br>       <br>float Areatotal (const Cilindro &RefCil)<br>    {<br>                //cout << Arealateral (RefCil);<br>        return ((2*Area(*RefCil.AptC))+Arealateral(RefCil));<br>    }<br>       <br>float Volumen (const Cilindro &RefCil)<br>    {<br>        return (Area(*RefCil.AptC)*RefCil.Altura);<br>    }<br>       <br>void Imprimir (Cilindro &RefCil)<br>    {<br>        Imprimir (*RefCil.AptC);<br>        cout << "\tArea Lateral = " << Arealateral (RefCil) << "\n"<br>             << "\tArea Total   = " << Areatotal (RefCil) << endl<br>             << "\tVolumen      = " << Volumen (RefCil) << endl << endl;<br>    }                            //fin de imprimir()<br><br><br /><hr />Agrupa tus contactos de Messenger <a href='http://download.live.com/messenger' target='_new'>y realiza conversaciones grupales.</a></body>
</html>