Solucion

Anuncio
Solución Práctica Calificada - Programación C++
Pág. 1
ÍNDICE
ÍNDICE.............................................................................................................................................................................. 1
1.
EJERCICIO 1: CONVERSOR DE TEMPERATURAS .................................................................................... 1
2.
EJERCICIO 2: INTERSECCIÓN DE UNA RECTA CON UNA CIRCUNFERENCIA................................. 1
3.
EJERCICIO 3: CLASES - CONVERSOR DE COORD. CARTESIANAS A POLARES Y VICEVERSA... 2
1. Ejercicio 1: Conversor de temperaturas
#include <iostream.h>
#include <iomanip.h>
double Convierte(double f);
void main()
{
double A,B,INC,t;
cout << " Dar A,B e INC:?";
cin>>A>>B>>INC;
for (double f=A;f<B;f+=INC){
t=Convierte(f);
cout.precision(3);
cout << setw(10) << f;
cout << setw(10) << t << endl;
}
}
double Convierte(double f)
{
double c=(5*(f-32))/9;
return c;
}
2. Ejercicio 2: Intersección de una recta con una circunferencia
#include
#include
#include
#include
<iostream.h>
<math.h>
<string.h>
<iomanip.h>
void Ec2grado(double a,double b, double c,double &r1, double &r2, double &disc);
void main()
{
double m,c,a,b,r;
double A,B,C,R1,R2,DISC;
//para ec. segundo grado
cout << "dar m,c,a,b,r:?";
cin >> m>>c>>a>>b>>r;
A=1+m*m;
B=2*m*c-2*a-2*m*b;
C=a*a+c*c+b*b-2*b*c-r*r;
Ec2grado(A,B,C,R1,R2,DISC);
if (DISC<0.0) cout << "La recta no corta a la circunferencia"<<endl;
Informática II - Fundamentos de Programación
Paul Bustamante
Solución Práctica Calificada - Programación C++
else if
cout
}
else {
cout
cout
}
Pág. 2
(DISC == 0){
<< "La recta es tangente a la circunf. en " <<R1<<","<<R1*m+c <<endl;
//>0
<< "La recta corta a la circunf. en (" <<R1<<","<<R1*m+c<<") y en (";
<< R2 <<","<<R2*m+c<<")"<<endl;
}
void Ec2grado(double a, double b, double c,double &r1, double &r2, double &disc)
{
disc = b*b-4*a*c;
}
if (disc==0.0){
//raiz doble, la recta es tangente
r1=r2=-b/(2*a);
}else if(disc>0.0){
//2 raices reales
r1 = (-b + sqrt(disc))/(2*a);
r2 = (-b - sqrt(disc))/(2*a);
}else{
//<0
r1 = -b/(2*a);
r2 = sqrt( fabs(disc) )/(2*a);
}
3. Ejercicio 3: Clases - Conversor de coord. Cartesianas a Polares y viceversa
#include
#include
#include
#include
<iostream.h>
<math.h>
<stdlib.h>
<iomanip.h>
class Convierte
{
double x,y,r,ang; //ang en grados
bool tipo;
//true: cart a pola
false:pol a cart
public:
Convierte(bool tip=true){ tipo=tip;}
Convierte(double x1, double y1,double r1, double ang1){
x=x1; y=y1; r=r1; ang=ang1;
}
void PolarToCartesianas(double &x1, double &y1){
double ang1 = ang*3.141592/180;
x1 = r*cos(ang1);
y1 = r*sin(ang1);
}
void CartesianasToPolar(double &r1, double &ang1){
r1 = sqrt( x*x + y*y );
ang1 = atan(y/x)*180/3.141592 ;
}
friend istream& operator>>(istream&ci, Convierte &coor){
if (coor.tipo==true){
cout << "Dar x,y:?";
cin >> coor.x >> coor.y;
}else{
cout << "Dar r,ang:?";
cin >> coor.r >> coor.ang;
}
return ci;
}
};
void main()
Informática II - Fundamentos de Programación
Paul Bustamante
Solución Práctica Calificada - Programación C++
{
Pág. 3
int opc;
char ch;
double x,y,r,ang;
char *texto[]={"**Menu**","1.Cart. a Polares","2.Polares a Cart", "3.Salir"};
for (int i=0;i<50;i++) {
int x= rand();
cout.fill('.');
cout << i<<setw(20)<<x%100 << endl;
}
cout << "Pres any key to continiue...";
cin.getline(&ch,2);
system("cls");
}
while(true){
for (int i=0;i<4;i++)
cout << texto[i] << endl;
cout << "\tOpcion:?";
cin >> opc;
if (opc==3) { cout << "Adios..\n"; break;}
else if (opc==1){
//con sobrecarga de operadores
Convierte cv(true);
cin >> cv;
cv.CartesianasToPolar(r,ang);
cout << ">> R:"<< r << " Ang:" << ang << endl<<endl;
}
else if (opc==2){
//sin sobrecarga de operadores
cout << "\nDar r,ang:? ";
cin >> r >> ang;
Convierte cv(0,0,r,ang);
cv.PolarToCartesianas(x,y);
cout << ">> X:"<< x << " Y:" << y << endl<<endl;
}
}
Informática II - Fundamentos de Programación
Paul Bustamante
Descargar