#include <iostream>
#include "Estatuas.h"
using namespace std;
void mostrar(Estatuas *obj)
{
for (int i = 0; i < obj->getTamanoVector(); i++)
{
if (i == obj->getTamanoVector()-1)
{
cout << obj->getVector(i) << "]" << endl;
}
else
{
cout << obj->getVector(i) << ", ";
}
}
}
void mostrarTodo(Estatuas *obj)
{
int tam = obj->getTamanoVector()+obj->estatuasRequeridas();
for (int i = 0; i < tam; i++)
{
if (i == tam-1)
{
cout << obj->getVectorOrdenado(i) << "]" << endl;
}
else
{
cout << obj->getVectorOrdenado(i) << ", ";
}
}
}
int main(void)
{
Estatuas *obj = new Estatuas();
int tam, dato;
cout << "Digite tama" << (char) 164 << "o del vector" << endl;
cout << ">> ";
cin >> tam;
obj->setTamanoVector(tam);
obj->crearVector();
for (int i = 0; i < obj->getTamanoVector(); i++)
{
do
{
cout << "Digite tama" << (char) 164 << "o de la estatua " << i << endl;
cout << ">> ";
cin >> dato;
obj->setVector(i, dato);
}
while (dato < 0);
}
cout << "Tama" << (char) 164 << "o de las estatuas de Timmy: [";
mostrar(obj);
if (obj->getTamanoVector() > 1)
{
obj->ordenar();
cout << "Estatuas ordenadas: [";
mostrar(obj);
obj->crearVectorOrdenado();
obj->llenarEstatuasFaltantes();
cout << "Todas las estatuas ordenadas de 1 en 1: [";
mostrarTodo(obj);
}
cout << "Se necesitaron " << obj->estatuasRequeridas() << " estatuas para ordenarlas de 1 en 1." << endl;
}
#ifndef ESTATUAS_H
#define ESTATUAS_H
#include <iostream>
using namespace std;
class Estatuas
{
public:
Estatuas();
virtual ~Estatuas();
void setTamanoVector(int val);
int getTamanoVector();
void setVector(int pos, int val);
int getVector(int pos);
void setVectorOrdenado(int pos, int val);
int getVectorOrdenado(int pos);
void crearVector();
void crearVectorOrdenado();
int mayorTamano();
int menorTamano();
void cambiar(int p1, int p2);
void ordenar();
int estatuasRequeridas();
void llenarEstatuasFaltantes();
protected:
private:
int tamano;
int *vector;
int *vector_ordenado;
};
#endif
#include "Estatuas.h"
Estatuas::Estatuas()
{
tamano = 0;
vector = NULL;
vector_ordenado = NULL;
}
Estatuas::~Estatuas()
{
}
void Estatuas::setTamanoVector(int val)
{
tamano = val;
}
int Estatuas::getTamanoVector()
{
return tamano;
}
void Estatuas::setVector(int pos, int val)
{
vector[pos] = val;
}
int Estatuas::getVector(int pos)
{
return vector[pos];
}
void Estatuas::setVectorOrdenado(int pos, int val)
{
vector_ordenado[pos] = val;
}
int Estatuas::getVectorOrdenado(int pos)
{
return vector_ordenado[pos];
}
void Estatuas::crearVector()
{
vector = new int[tamano];
}
void Estatuas::crearVectorOrdenado()
{
int tam = tamano+estatuasRequeridas();
vector_ordenado = new int[tam];
}
int Estatuas::mayorTamano()
{
int may = 0;
int temp;
for (int i = 0; i < getTamanoVector(); i++)
{
temp = getVector(i);
if (temp > may)
{
may = temp;
}
}
return may;
}
int Estatuas::menorTamano()
{
int men = mayorTamano();
int temp;
for (int i = 0; i < getTamanoVector(); i++)
{
temp = getVector(i);
if (temp < men)
{
men = temp;
}
}
return men;
}
void Estatuas::cambiar(int p1, int p2)
{
int temp = getVector(p1);
setVector(p1, getVector(p2));
setVector(p2, temp);
}
void Estatuas::ordenar()
{
for (int i = 0; i < getTamanoVector(); i++)
{
for (int j = i+1; j < getTamanoVector(); j++)
{
if (getVector(i) > getVector(j))
{
cambiar(i, j);
}
}
}
}
int Estatuas::estatuasRequeridas()
{
return (mayorTamano() - menorTamano() + 1) - getTamanoVector();
}
void Estatuas::llenarEstatuasFaltantes()
{
int tam = getTamanoVector()+estatuasRequeridas();
int temp = getVector(0);
for (int i = 0; i < tam; i++)
{
if (i == 0)
{
setVectorOrdenado(i, temp);
}
else
{
temp++;
setVectorOrdenado(i, temp);
}
}
}