You are on page 1of 5

1. #include <iostream> #include <stdlib.

h> using namespace std; //Muestra el uso de plantillas de funcion o patrones en C++ /* El programa define dos funciones plantilla llamadas maximo para evaluar el maximo de dos y tres datos respectivamente */ template <class T> T maximo(T x, T y) { if (x > y) return x; else return y; } template <class T> T maximo(T x, T y, T z) { T max = x; if (y > max) max = y; if (z > max) max = z; return max; } int main() //patron1.cpp { //probando con enteros int a, b, c; cout<<"Ingrese dos enteros diferentes "; cin>>a>>b; if (a!=b) cout<<"El maximo de "<<a<<" y "<<b<<" es : "<<maximo(a,b)<<endl; else cout<<"Los numeros ingresados deben ser diferentes\n"; cout<<"Ingrese tres enteros diferentes "; cin>>a>>b>>c; if((a!=b && b!=c) && (a!=c && c!=b)) cout<<"El maximo de "<<a<<" , "<<b<<" y "<<c<<" es :" <<maximo(a,b,c)<<endl; else cout<<"Los tres numeros ingresados deben ser diferentes entre si\n"; //probando con reales float f, g, h; cout<<"Ingrese dos reales diferentes ";

cin>>f>>g; if (f!=g) cout<<"El maximo de "<<f<<" y "<<g<<" es : "<<maximo(f,g)<<endl; else cout<<"Los numeros ingresados deben ser diferentes\n"; cout<<"Ingrese tres reales diferentes "; cin>>f>>g>>h; if((f!=g && g!=h) && (f!=h && h!=g)) cout<<"El maximo de "<<f<<" , "<<g<<" y "<<h<<" es :" <<maximo(f,g,h)<<endl; else cout<<"Los tres numeros ingresados deben ser diferentes entre si\n"; //probando con caracteres char car1, car2, car3; cout<<"Ingrese dos caracteres diferentes "; cin>>car1>>car2; cout<<"El maximo valor de "<<car1<<" y "<<car2<<" es : "<<maximo(car1,car2)<<endl; cout<<"Ingrese tres caracteres diferentes "; cin>>car1>>car2>>car3; cout<<"El maximo de "<<car1<<" , "<<car2<<" y "<<car3<<" es : "<<maximo(car1,car2,car3)<<endl; system("PAUSE"); return 0; } 2. #include <iostream> #include <stdlib.h> using namespace std; /* la plantilla de funcion imprimeArray, imprime un arreglo segun el tipo de dato que recibe como argumento */ template <class T> void imprimeArray(const T *array, const int n) {

for(int i=0; i<n; i++) cout<<array[i]<<" "; cout<<endl;

int main() //patron2.cpp { int a[10], n=10, i;

double d[10]; char s[]="ALGORITMOS Y PROGRAMACION"; //cargando el array de enteros for(i=0; i<n; i++) a[i]=i*2+1; cout<<"El arreglo a, de enteros contiene: "; imprimeArray(a,n); // llamando a la funcion plantilla // cargando el array de dobles for(i=0; i<n; i++) d[i]=i+2.2; cout<<"\nEl arreglo d, de dobles contiene: "; imprimeArray(d,n); // llamando a la funcion plantilla cout<<"\nEl arreglo s, de caracteres contiene: "; imprimeArray(s,sizeof(s)); system("PAUSE"); return 0;

} 3.-

// Programa que ordena los datos de un vector en forma ascendente #include <iostream> #include <iomanip> using namespace std; template < class T > void swap( T * const, T * const); // Funcion template para Ordenacion Burbuja template < class T > void OrdeBurbuja( T * const array, int n ) { for ( int pass = 1; pass < n; ++pass ) for ( int j = 0; j < n - pass; ++j ) if ( array[ j ] > array[ j + 1 ] ) swap( array + j, array + j + 1 ); } template < class T >

void swap( T * const element1Ptr, T * const element2Ptr ) { T temp = *element1Ptr; *element1Ptr = *element2Ptr; *element2Ptr = temp; } int main() { const int tamanoMatriz = 10; int a[ tamanoMatriz ] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }, i; // Procesa un arreglo de enteros cout << "Nuemro entero en orden original\n"; for ( i = 0; i < tamanoMatriz; ++i ) cout << setw( 6 ) << a[ i ]; OrdeBurbuja( a, tamanoMatriz ); // Ordenando la matriz cout << "\nNumeros enteros en orden ascendente\n"; for ( i = 0; i < tamanoMatriz; ++i ) cout << setw( 6 ) << a[ i ]; cout << "\n\n"; // Procesando el vector de reales double b[ tamanoMatriz ] = { 10.1, 9.9, 8.8, 7.7, 6.6, 5.5, 4.4, 3.3, 2.2, 1.1 }; cout << "Numeros reales en orden original\n"; for ( i = 0; i < tamanoMatriz; ++i ) cout << setw( 6 ) << b[ i ]; OrdeBurbuja( b, tamanoMatriz ); // ordenando el vector cout << "\n\nNumeros reales en forma ascendente\n"; for ( i = 0; i < tamanoMatriz; ++i ) cout << setw( 6 ) << b[ i ]; cout << endl; system ("pause"); return 0; }

Ejercicios Propuestos: 1. Escriba un programa que defina y pruebe una funcin plantilla que implemente el algoritmo del swap. 2. Escriba un programa que defina y pruebe una funcin plantilla que implemente el algoritmo de la burbuja. 3. Escriba un programa que defina y pruebe una funcin plantilla que implemente el algoritmo de shell. 4. Escriba un programa que defina y pruebe una funcin plantilla que implemente el algoritmo de quick sort. 5. Escriba un programa que defina y pruebe una funcin plantilla que implemente el algoritmo de seleccin directa. 6. Escriba un programa que defina y pruebe una funcin plantilla que implemente el algoritmo de insercin directa. 7. Escriba un programa que defina y pruebe una funcin plantilla que reciba dos parmetros y retorne el de mayor valor, probar la funcin con enteros, flotantes y caracteres. 8. Escriba un programa que defina y pruebe una funcin plantilla que lea los elementos para un arreglo, otra funcin que imprima el arreglo y una funcin que devuelva el menor elemento del arreglo. 9. Escriba un programa que defina y pruebe una funcin plantilla que implemente un algoritmo de bsqueda. 10. Escriba funciones plantillas para leer, imprimir y sumar matrices, pruebe las funciones con enteros y flotantes.

You might also like