Practica Calificada Grupo A Programación en C++ Ejercicio 1 #include <iostream.h> #include <math.h> float *PedirPuntos(int &num); void DistanciasEntrePuntos(float *,int); void main() { float *v; int num; v = PedirPuntos(num); //aqui crear el vector DistanciasEntrePuntos(v,num); delete [] v; //liberar memoria } float *PedirPuntos(int &num) { float *vec; cout << "Num. de Puntos:?"; cin >> num; vec = new float[num*2]; for (int i=0;i<num*2;i+=2){ cout << "Dar Punto "<<i/2+1<<"(x,y):?"; cin >> vec[i] >> vec[i+1]; } return vec; } void DistanciasEntrePuntos(float *v,int num) { int I,J; float menor=1e10; float d,x2,x1,y2,y1; for (int i=0;i<num-1;i++){ x1=v[i*2]; y1=v[i*2+1]; for (int j=i+1;j<num;j++){ x2=v[j*2]; y2=v[j*2+1]; d = sqrt( pow(x2-x1,2.0) + pow(y2-y1,2.0) ); if (menor > d) { menor=d; I=i; J=j; } cout << "\tDist. ("<<v[i*2]<<","<<v[i*2+1]; cout << " y "<<v[j*2]<<","<<v[j*2+1]<<"): "<< d << endl; } } cout << "\nLa menor distancia es:" << menor << endl; cout << "Entre los puntos ("<<v[I*2]<<","<<v[I*2+1]; cout << " y "<<v[J*2]<<","<<v[J*2+1]<<")"<<endl<<endl; } Escuela Superior de Ingenieros – Tecnun – Universidad de Navarra Pág. 1 Practica Calificada Grupo A Programación en C++ Ejercicio 2 #include <iostream.h> #include <math.h> void PolarToCartesianas(float r, float ang,float &x, float &y); void CartesianasToPolar(float x, float y, float &r, float &ang); void main() { int opc; char ch; float x,y,r,ang; while(true){ cout << "** Menu **"<<endl; cout << "1. Cartesianas a Polares "<<endl; cout << "2. Polares a Cartesianas"<<endl; cout << "3. Salir"<<endl; cout << "\tOpcion:?"; cin >> opc; if (opc==3) { cout << "Adios..\n"; break;} else if (opc==1){ cout << "\nDar x,y:? "; cin >> x >> ch >>y; CartesianasToPolar(x,y,r,ang); cout << ">> R:"<< r << " Ang:" << ang << endl<<endl; } else if (opc==2){ cout << "\nDar r,ang:? "; cin >> r >> ch >>ang; PolarToCartesianas(r,ang,x,y); cout << ">> X:"<< x << " Y:" << y << endl<<endl; } } } void PolarToCartesianas(float r, float ang,float &x, float &y) { ang = ang*3.141592/180; x = r*cos(ang); y = r*sin(ang); } void CartesianasToPolar(float x, float y, float &r, float &ang) { r = sqrt( x*x + y*y ); ang = atan(y/x)*180/3.141592; } Escuela Superior de Ingenieros – Tecnun – Universidad de Navarra Pág. 2 Practica Calificada Grupo A Programación en C++ Ejercicio 3 #include <iostream.h> #include <string.h> char *PideTexto(); void ContarVocales(char *, int []); void Imprime(int []); void main() { char *texto; int Num[5]; texto = PideTexto(); ContarVocales(texto,Num); Imprime(Num); delete [] texto; //libera memoria } char *PideTexto() { char tmp[180]; cout << "Escriba el texto:\n>>"; cin.getline(tmp,180); char *t = new char[ strlen(tmp)+1]; strcpy(t,tmp); return t; } void ContarVocales(char *t, int Num[]) { char min[]={'a','e','i','o','u'}; char may[]={'A','E','I','O','U'}; int len=strlen(t); for (int i=0;i<5;i++) Num[i]=0; for (i=0;i<len;i++){ for (int j=0;j<5;j++) if ( t[i]==min[j] || t[i]==may[j]) Num[j]++; } } void Imprime(int Num[]) { char ch[]={'a','e','i','o','u'}; cout << "\nVocales repetidas:\n"; for (int i=0;i<5;i++){ cout << "Vocal " << ch[i] << ": " << Num[i]<<endl; } } Escuela Superior de Ingenieros – Tecnun – Universidad de Navarra Pág. 3