Escuela Superior de Ingenieros - Tecnun - Paul Bustamante 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 #include <iostream.h> //declaracion de funciones int Perfecto(int n); void PideDatos( int &A, int &B); int *BuscaPerfectos(int A, int B, int&); void Print(int *num, int n); //main() void main() { int A,B,n; int *num; //vector para perfectos PideDatos(A,B); num = BuscaPerfectos(A,B,n); Print(num,n); if (num != NULL) delete [] num; } //Definicion de funciones void PideDatos( int &A, int &B) { //verificar que A sea >= que 10 - 2 cifras y B>A A=1; B=0; while( A<10 || B<A) { cout << "Dar A B (A>10 y B>A): "; cin >> A >> B; } } void Print(int *num, int n) { for (int i=0;i<n;i++) cout << num[i] << endl; } int *BuscaPerfectos(int A, int B, int &n) { int cont=0; for (int i=A;i<=B;i++) if ( Perfecto(i)) cont++; int *num = new int[cont]; cont=0; for (i=A;i<=B;i++) if ( Perfecto(i)) num[cont++]=i; n=cont; return num; } int Perfecto(int n) { int i=0, suma=0, mitad=n/2; for (i=1;i<=mitad;i++) if(!(n%i)) suma+=i; return !(n-suma); }