Beruflich Dokumente
Kultur Dokumente
Metodologa
Usted deber leer el presente documento e ir corriendo los programas en
C++, cuidando de leer bien las instrucciones y tratar de entenderlas por
completo. Est escrito de una forma escalonada para que alcance el
conocimiento de C++ y programacin por objetos de forma progresiva.
Se recomiendo leerlo con cuidado, porque aunque no es demasiado
extenso si contiene mucha informacin que usted debe ir asimilando. Si
va muy rpido llegar un punto en que no entender.
Resuelva los ejercicios y presntelos al profesor.
Vamos a realizar primero una pila hecha con un arreglo esttico (sin
apuntadores) y luego un ejemplo con apuntadores.
main() {
Vector mivector;
mivector.entrarDato(345,43);
mivector.entrarDato(23,47);
mivector.entrarDato(5,35);
mivector.entrarDato(8,38);
mivector.entrarDato(10,39);
mivector.entrarDato(23,40);
mivector.mostrarVector();
cout << "********************" << endl;
cout << "Posicion 23 : " << mivector.verDato(23) << endl;
Ejercicio Resuelto A
Haga una clase que contenga un vector de 10, que contenga los
factoriales de los primeros 10 nmeros. Estos valores deben ser
calculados y guardados en el constructor de la clase y luego para
consulta no se deben calcular sino leer del vector interno. Si el usuario da
un nmero mayor a 9 se le informar que no es posible hacer su
operacin.
Elabore la clase y el programa que permita probar su funcionamiento.
Solucin
prog2
#include "iostream.h"
class Factorial {
int vector[10];
public:
Factorial ();
int verFactorial(int dato) {
if (dato < 10)
return vector[dato];
else {
cout << "El valor de " << dato << " no esta presente" << endl;
return -1;
}
}
};
Factorial::Factorial() {
int i,prodacumulado=1;
for (i = 0; i<10; i++)
if (i == 0)
vector[i] = 1;
else {
prodacumulado *= i;
vector[i] = prodacumulado;
}
}
main () {
cout << "Bienvenido al programa factorial" << endl;
Factorial miFactorial;
cout << "5! = "<< miFactorial.verFactorial(5) << endl;
cout << "9! = "<< miFactorial.verFactorial(9) << endl;
cout << "2! = "<< miFactorial.verFactorial(2) << endl;
cout << "1! = "<< miFactorial.verFactorial(1) << endl;
cout << "15! = "<< miFactorial.verFactorial(15) << endl;
}
int indicePila;
public:
Pila() {
// funciones analizadoras
void mostrarDatos();
int cuantosDatos();
// funciones modificadoras
void entrarDato(int dato);
int sacarDato();
};
// Esta funcin sale del cuerpo de la clase porque usa un ciclo.
void Pila::mostrarDatos() {
cout << endl << "DATOS EN LA PILA" << endl;
for (int i=0; i<=indicePila; i++)
cout << "Dato No. " << i << " : " << vector[i] << endl;
cout << endl;
}
int Pila::cuantosDatos() {
return indicePila + 1;
Hay que notar que todas las funciones con excepcin del constructor se
sacaron del cuerpo de la clase y su nombre se resolvi usando los dos
pares de dos puntos ::. Esto permite implementar una funcin miembro
por fuera del cuerpo de la clase.
De esta forma por ejemplo, la funcin que dentro del cuerpo de la clase
se llama:
void entrarDato(int dato);
pila1.entrarDato(respuesta);
break;
case 2:
cout << "Dato obtenido:" << pila1.sacarDato() << endl;
break;
case 3:
cout << "Hay " << pila1.cuantosDatos() << " en la pila" << endl;
break;
case 4:
pila1.mostrarDatos();
}
}
return 0;
int indicePila;
public:
Pila() {
indicePila = -1;
inicio = NULL;
final = NULL;
}; // constructor
// funciones analizadoras
void mostrarDatos();
int cuantosDatos();
// funciones modificadoras
void entrarDato(int dato);
int sacarDato();
~Pila();
};
// Esta funcin sale del cuerpo de la clase porque usa un ciclo.
void Pila::mostrarDatos() {
int Pila::cuantosDatos() {
return indicePila + 1;
}
void Pila::entrarDato(int dato) {
struct nodo *nuevo = new struct nodo;
nuevo->campo = dato;
nuevo->siguiente = NULL;
nuevo->anterior = NULL;
if (final != NULL) {
final->siguiente = nuevo;
nuevo ->anterior = final;
} else
inicio = nuevo;
final = nuevo;
indicePila ++;
int Pila::sacarDato() {
struct nodo *aux = final;
cout << "valor ";
int valor;
if (aux != NULL) {
valor = aux->campo;
if (final != NULL)
final = final->anterior;
if (final != NULL)
final->siguiente = NULL;
else
inicio = NULL;
delete aux;
indicePila --;
return valor;
}
return -1;
Pila::~Pila() {
struct nodo *aux = inicio;
while (aux != NULL) {
inicio = inicio->siguiente;
delete aux;
aux = inicio;
}
}
int menu() {
cout << endl << endl;
cout << "Bienvenido al programa manejador de Pila de enteros" << endl;
cout << "Escoja una opcin" << endl;
cout << "**************************************" << endl;
cout << "0. Salir del Programa" << endl;
cout << "1. Adicionar entero" << endl;
cout << "2. Sacar entero" << endl;
cout << "3. Ver cuantos datos tiene la pila" << endl;
cout << "4. Mostrar datos en la pila" << endl;
cout << "**************************************" << endl;
int opcion;
cin >> opcion;
return opcion;
main () {
Pila pila1;
int respuesta,opcion;
opcion = -1;
while (opcion != 0) {
opcion = menu();
switch (opcion) {
case 0:
cout << "Gracias por usar nuestro software" << endl;
break;
case 1: