<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>