Anda di halaman 1dari 5

POO Clase prctica Temas 7 y 8 Tipos genricos y manejo de excepciones

PROGRAMACIN ORIENTADA A OBJETOS (POO)


CLASE PRCTICA DE LOS TEMAS 7 Y 8: TIPOS GENRICOS Y MANEJO
DE EXCEPCIONES
1. Declare una funcin genrica llamada visualizavector de tal forma que funcione el
siguiente cdigo:
void main()
{
int a[5] = {1, 3, 5, 7, 9};
float b[4] = {1.1, 1.2, 1.3, 1.4}
char c[5] = hola;
cout << vector de enteros;
visualizarvector(a, 5);
cout << vector de floats;
visualizarvector(b, 4);
cout << vector de chars;
visualizarvector(c, 4);
}
2. Qu imprime el programa siguiente?
#include <iostream>
using namespace std;
template <class T>
class stackvector
{
T *data;
int tope;
unsigned int size;
public:
stackvector (unsigned int tam);
T pop();
void push(T value);
};
template <class T>
stackvector<T> :: stackvector(unsigned int tam): size(tam)
{

data = new T[size];


tope = size;

Lic. lvaro Altamirano Osorio

POO Clase prctica Temas 7 y 8 Tipos genricos y manejo de excepciones


}
template <class T>
void stackvector<T> :: push(T val)
{
if ( tope == 1)
cout << "Pila llena";
else
data[--tope]=val;
}
template <class T>
T stackvector<T> :: pop()
{
if (tope == (size+1))
return -1;
else
return data[tope++];
}
void main()
{
stackvector<int> st(5);
st.push(5);
st.push(3);
st.push(2);
for(int i=0; i<3; i++)
cout << " " << st.pop() << endl;
stackvector<double> st2(6);
st2.push(3.1416);
st2.push(1.7178);
st2.push(0.0001);
st2.push(12345.123);
for(i=0; i<4; i++)
cout << " "<< st2.pop() << endl;
}
3. Aada al programa anterior una funcin para imprimir los datos de una pila. Se debe
pasar como parmetro una plantilla genrica.
4. Aada al programa anterior una funcin amiga llamada IncrementarVector
incremente en 1 el valor de cada uno de los elementos del vector.

que

5. Modifique el siguiente programa de tal forma que se haga uso del manejo de
excepciones para controlar los posibles errores que se puedan dar:
#include <iostream>
using namespace std;

Lic. lvaro Altamirano Osorio

POO Clase prctica Temas 7 y 8 Tipos genricos y manejo de excepciones


int main()
{
int *x = 0;
int y = 100000000;
x = new int [y];
if (x)
{
x[10] = 0;
cout << Puntero: << x << endl;
delete [] x;
}
else
{
cout << Memoria insuficiente. << endl;
}
cin.get();
return 0;
}
6. Qu hace el siguiente programa?
#include <iostream>
using namespace std;
int main() {
try {
try {
try {
throw 'x'; // valor de tipo char
}
catch(int i) {}
catch(float k) {}
}
catch(unsigned int x) {}
}
catch(char c) {
cout << "El valor de c es: " << c << endl;
}

cin.get();
return 0;

7. Y este otro?
#include <iostream>
using namespace std;

Lic. lvaro Altamirano Osorio

POO Clase prctica Temas 7 y 8 Tipos genricos y manejo de excepciones


int main() {
try {
throw 'x'; //
}
catch(int c) {
cout << "El valor de c es: " << c << endl;
}
catch(...) {
cout << "Excepcin imprevista" << endl;
}
cin.get();
return 0;
}
8. Y este otro?
#include <iostream>
using namespace std;
void Programa();
int main() {
try {
// Programa
Programa();
}
catch(int x) {
cout << "Excepcin relanzada capturada." << endl;
cout << "error: " << x << endl;
}
catch(...) {
cout << "Excepcin inesperada." << endl;
}
cin.get();
return 0;
}
void Programa() {
try {
// Operaciones...
throw 10;
}
catch(int x) {
// Relanzar, no nos interesa manejar aqu
throw;
}
}

Lic. lvaro Altamirano Osorio

POO Clase prctica Temas 7 y 8 Tipos genricos y manejo de excepciones


9. Escriba un programa en C++ que declare una clase llamada LeerDatos. Esta clase
debe tener como miembros pblicos 4 funciones:
static void LeerInt(int &);
static void LeerString(char *);
static void LeerDouble(double &);
static void LeerChar(char &);
Se debern definir estas funciones de tal forma que se almacene en la variable que se
pasa como parmetro un valor pedido por teclado segn el tipo. Observe que los
parmetros son referencias. Se debe hacer uso del manejo de excepciones para
controlar errores que se puedan producir durante la lectura. A continuacin escriba
una funcin main() que haga uso de dicha clase y que ponga a prueba el cdigo que
maneja las posibles excepciones.

Lic. lvaro Altamirano Osorio

Anda mungkin juga menyukai