Está en la página 1de 16

ALGORITMIA Y PROGRAMACION SEMESTRE III TECNOLOGIA EN

ELECTRONICA
HUGO ANDREZ BUSTOS RESTREPO-1556165-2710

PROYECTO BRAZO MECANICO


Anlisis del problema:
Esta aplicacin tiene tres entidades bsicas: la bodega, el brazo y los cubos.
El Brazo Mecnico define 6 constantes para identificar los cuatro movimientos
posibles que puede hacer dentro de la bodega
Bodega, Derecha, Izquierda, Superior, Abajo, Tomar
Con las constantes derecha y superior, el brazo mecnico conoce su posicin
dentro de la bodega. El valor derecha define la columna en la que se encuentra y
el valor superior la altura.
Cuando el brazo toma un cubo el sistema pregunta la posicin que desea ubicarlo
Si no lleva ningn cubo agarrado, este atributo tiene el valor null.
La entidad bodega requiere que se declaren la num con i=0 y j=0, que se utilizan
para representar las dimensiones de la bodega: el primero dice el nmero de
columnas y el segundo el nmero mximo de cubos por columna, en eset caso
sern de 9 por 9.
Las tres entidades tienen las siguientes funciones
El Cubo tiene como funcin principal indicar su posicin en la pantalla.
La Bodega es responsable de manejar las columnas en donde se apilan los
cubos. La bodega esta delimitada por 9 asteriscos en el eje Y y 9 asteriscos en el
eje X: hay un cubo en una posicin dada? y cul es el tamao de la bodega?
La bodega tambin debe saber ubicar y eliminar un cubo de una posicin dada.
La Bodega trabaja en estrecha colaboracin con el Brazo Mecanico.
Para el Brazo Mecanico tenemos lo siguiente:
Ubicacin: el brazo sabe dnde se encuentra ubicado dentro de la bodega
(posicionX, posicionY). Por esta razn, tiene la responsabilidad de informar sobre
su posicin, para esto se declaran Derecha, Izquierda, Superior, Abajo.
Relacin con un cubo: tiene una asociacin de cardinalidad opcional con un cubo,
que representa la posibilidad de tomar un cubo. El brazo sabe si tiene o no un
cubo en la pinza, dependiendo de si la asociacin existe. Por esta razn, tiene la
responsabilidad de implementar un mtodo que devuelva el cubo o null si no lleva
ninguno.
Declaramos un switch para indicarle al programa los movimientos que tendr el
cubo.

ALGORITMIA Y PROGRAMACION SEMESTRE III TECNOLOGIA EN


ELECTRONICA
HUGO ANDREZ BUSTOS RESTREPO-1556165-2710

En esta aplicacin utilizamos estructura de control IF ELSE de forma anidada en la


Bodega, para preguntar e indicar la posicin del brazo mecnico y si es verdadera
me imprimir el cubo en la posicin exixtente indicada

CODIGO PARA COPIAR EN CODEBLOCKS:


include <iostream>
//Hugo Andrez Bustos - 1556165-2710
using namespace std;

int Bodega(double numero[]);


int Derecha(double numero[]);
int Izquierda(double numero[]);
int Superior(double numero[]);
int Abajo(double numero[]);
int Tomar(double numero[]);

int num, i=0, j=0;


char comando;
double x=0,y=0;

char
cubo1='c',cubo2='c',cubo3='c',cubo4='c',cubo5='c',cubo6='c',cubo7='c',cubo8='c',cu
bo9='c';
int
xcubo1=8,ycubo1=2,xcubo2=8,ycubo2=3,xcubo3=8,ycubo3=4,xcubo4=8,ycubo4=
5,xcubo5=8,ycubo5=6,xcubo6=8,ycubo6=7,xcubo7=8,ycubo7=8;
int xcubo9=7,ycubo9=8,xcubo8=7,ycubo8=2;

ALGORITMIA Y PROGRAMACION SEMESTRE III TECNOLOGIA EN


ELECTRONICA
HUGO ANDREZ BUSTOS RESTREPO-1556165-2710

int main()
{
cout <<"Aplicacion con Brazo Mecanico"<<endl;
cout <<"Alumno Hugo Andrez Bustos:"<<endl;
cout <<""<<endl;
cout <<"d para Derecha"<<endl;
cout <<"i para izquierda"<<endl;
cout <<"a para abajo"<<endl;
cout <<"s para superior"<<endl;
cout <<"t para tomar "<<endl;
cout <<"f para salir"<<endl<<endl;
cout << "\n";

double matriz [num];


Bodega(matriz);
while(comando != 'f'){

cin >> comando;


switch(comando){
case 'd':
Derecha(matriz);
break;
case 'i':
Izquierda(matriz);
break;
case 'a':
Abajo (matriz);
break;

ALGORITMIA Y PROGRAMACION SEMESTRE III TECNOLOGIA EN


ELECTRONICA
HUGO ANDREZ BUSTOS RESTREPO-1556165-2710

case 's':
Superior(matriz);
break;
case 't':
Tomar(matriz);
break;
}
}
return 0;
}

int Bodega (double numero[]){


int canti;
x=x+1;
for (int i=1;i<=9;i++){
for (int j=1;j<=9;j++){
if ( j==9 | j==1 )
cout << "*"<< " ";
else
if (i==9)
cout << "**" <<" ";
else
if (i==xcubo1 && j==ycubo1)
cout << cubo1<< " ";
else
if (i==xcubo2 && j==ycubo2)
cout << cubo2<< " ";
else

ALGORITMIA Y PROGRAMACION SEMESTRE III TECNOLOGIA EN


ELECTRONICA
HUGO ANDREZ BUSTOS RESTREPO-1556165-2710

if (i==xcubo3 && j==ycubo3)


cout << cubo3<< " ";
else
if (i==xcubo4 && j==ycubo4)
cout << cubo4<< " ";
else
if (i==xcubo5 && j==ycubo5)
cout << cubo5 <<" ";
else
if (i==xcubo6 && j==ycubo6)
cout << cubo6 << " ";
else
if (i==xcubo7 && j==ycubo7)
cout << cubo7 << " ";
else
if (i==xcubo8 && j==ycubo8)
cout << cubo8 << " ";
else
if (i==xcubo9 && j==ycubo9)
cout << cubo9 << " ";
else
if(j==9 / 2 + x && i==1)
cout << char(190)<< " ";
else
cout << " ";
}
cout << "\n"<< endl;
}

ALGORITMIA Y PROGRAMACION SEMESTRE III TECNOLOGIA EN


ELECTRONICA
HUGO ANDREZ BUSTOS RESTREPO-1556165-2710

int Derecha(double numero[]){


int canti, acu, j;
x = x + 1;
for (int i=1;i<=9;i++){
for ( j=1;j<=9;j++){
if ( j==9 | j==1 )
cout << "*"<< " ";
else
if (i==9)
cout << "**" <<" ";
else
if (i==xcubo1 && j==ycubo1)
cout << cubo1<< " ";
else
if (i==xcubo2 && j==ycubo2)
cout << cubo2<< " ";
else
if (i==xcubo3 && j==ycubo3)
cout << cubo3<< " ";
else
if (i==xcubo4 && j==ycubo4)
cout << cubo4<< " ";
else
if (i==xcubo5 && j==ycubo5)
cout << cubo5 <<" ";
else

ALGORITMIA Y PROGRAMACION SEMESTRE III TECNOLOGIA EN


ELECTRONICA
HUGO ANDREZ BUSTOS RESTREPO-1556165-2710

if (i==xcubo6 && j==ycubo6)


cout << cubo6 << " ";
else
if (i==xcubo7 && j==ycubo7)
cout << cubo7 << " ";
else
if (i==xcubo8 && j==ycubo8)
cout << cubo8 << " ";
else
if (i==xcubo9 && j==ycubo9)
cout << cubo9 << " ";
else
if(j==9 / 2 + x && i==1 + y){
acu = 9 / 2 + x;
cout << char(190) << " ";
}
else
cout << " ";
}
cout << "\n"<< endl;
}

if(acu>9){
cout << "\n" << endl;
Izquierda(numero);
}
}

ALGORITMIA Y PROGRAMACION SEMESTRE III TECNOLOGIA EN


ELECTRONICA
HUGO ANDREZ BUSTOS RESTREPO-1556165-2710

int Izquierda (double numero[]){


int canti, acu;
char cubo = 'c';
x = x - 1;

for (int i=1;i<=9;i++){


for (int j=1;j<=9;j++){
if ( j==9 | j==1 )
cout << "*"<< " ";
else
if (i==9)
cout << "**" <<" ";
else
if (i==xcubo1 && j==ycubo1)
cout << cubo1<< " ";
else
if (i==xcubo2 && j==ycubo2)
cout << cubo2<< " ";
else
if (i==xcubo3 && j==ycubo3)
cout << cubo3<< " ";
else
if (i==xcubo4 && j==ycubo4)
cout << cubo4<< " ";
else
if (i==xcubo5 && j==ycubo5)
cout << cubo5 <<" ";

ALGORITMIA Y PROGRAMACION SEMESTRE III TECNOLOGIA EN


ELECTRONICA
HUGO ANDREZ BUSTOS RESTREPO-1556165-2710

else
if (i==xcubo6 && j==ycubo6)
cout << cubo6 << " ";
else
if (i==xcubo7 && j==ycubo7)
cout << cubo7 << " ";
else
if (i==xcubo8 && j==ycubo8)
cout << cubo8 << " ";
else
if (i==xcubo9 && j==ycubo9)
cout << cubo9 << " ";
else
if(j==9 / 2 + x && i==1 + y){
acu = 9 / 2 + x;
cout << char(190) << " ";
}
else
cout << " ";
}
cout << "\n"<< endl;
}

if(acu>9){
cout << "\n" << endl;
Derecha(numero);
}
}

ALGORITMIA Y PROGRAMACION SEMESTRE III TECNOLOGIA EN


ELECTRONICA
HUGO ANDREZ BUSTOS RESTREPO-1556165-2710

int Superior (double numero[]){


int acu;
y = y - 1;

for (int i=1;i<=9;i++){


for (int j=1;j<=9;j++){
if ( j==9 | j==1 )
cout << "*"<< " ";
else
if (i==9)
cout << "**" <<" ";
else
if (i==xcubo1 && j==ycubo1)
cout << cubo1<< " ";
else
if (i==xcubo2 && j==ycubo2)
cout << cubo2<< " ";
else
if (i==xcubo3 && j==ycubo3)
cout << cubo3<< " ";
else
if (i==xcubo4 && j==ycubo4)
cout << cubo4<< " ";
else
if (i==xcubo5 && j==ycubo5)
cout << cubo5 <<" ";

ALGORITMIA Y PROGRAMACION SEMESTRE III TECNOLOGIA EN


ELECTRONICA
HUGO ANDREZ BUSTOS RESTREPO-1556165-2710

else
if (i==xcubo6 && j==ycubo6)
cout << cubo6 << " ";
else
if (i==xcubo7 && j==ycubo7)
cout << cubo7 << " ";
else
if (i==xcubo8 && j==ycubo8)
cout << cubo8 << " ";
else
if (i==xcubo9 && j==ycubo9)
cout << cubo9 << " ";
else
if(j==9 / 2 + x && i==1 + y){
cout << char(190) << " ";
acu = 1 - y;
}
else
cout << " ";
}
cout << "\n"<< endl;
}
if(acu>=9){
cout << "\n" << endl;
Abajo(numero);
}

ALGORITMIA Y PROGRAMACION SEMESTRE III TECNOLOGIA EN


ELECTRONICA
HUGO ANDREZ BUSTOS RESTREPO-1556165-2710

int Abajo (double numero[]){


int canti, acu;
y = y + 1;

for (int i=1;i<=9;i++){


for (int j=1;j<=9;j++){
if ( j==9 | j==1 )
cout << "*"<< " ";
else
if (i==9)
cout << "**" <<" ";
else
if (i==xcubo1 && j==ycubo1)
cout << cubo1<< " ";
else
if (i==xcubo2 && j==ycubo2)
cout << cubo2<< " ";
else
if (i==xcubo3 && j==ycubo3)
cout << cubo3<< " ";
else
if (i==xcubo4 && j==ycubo4)
cout << cubo4<< " ";
else
if (i==xcubo5 && j==ycubo5)
cout << cubo5 <<" ";

ALGORITMIA Y PROGRAMACION SEMESTRE III TECNOLOGIA EN


ELECTRONICA
HUGO ANDREZ BUSTOS RESTREPO-1556165-2710

else
if (i==xcubo6 && j==ycubo6)
cout << cubo6 << " ";
else
if (i==xcubo7 && j==ycubo7)
cout << cubo7 << " ";
else
if (i==xcubo8 && j==ycubo8)
cout << cubo8 << " ";
else
if (i==xcubo9 && j==ycubo9)
cout << cubo9 << " ";
else
if(j==9 / 2 + x && i==1 + y){
cout << char(190) << " ";
acu = 1 + y;
}
else
cout << " ";
}
cout << "\n"<< endl;
}
if(acu>=9){
cout << "\n" << endl;
Superior (numero);
}
}

ALGORITMIA Y PROGRAMACION SEMESTRE III TECNOLOGIA EN


ELECTRONICA
HUGO ANDREZ BUSTOS RESTREPO-1556165-2710

int Tomar(double numero[])


{
if (x==-2 && y==5){
cout << "Donde desea ubicar el cubo: ";
cin >> xcubo8>>ycubo8;
}
else
if (x==-2 && y==6){
cout << "Donde desea ubicar el cubo: ";
cin >> xcubo1>>ycubo1;
}
else
if (x==-1 && y==6){
cout << "Donde desea ubicar el cubo: ";
cin >> xcubo2>>ycubo2;
}
else
if (x==0 && y==6){
cout << "Donde desea ubicar el cubo: ";
cin >> xcubo3>>ycubo3;
}
else
if (x==1 && y==6){
cout << "Donde desea ubicar el cubo: ";
cin >> xcubo4>>ycubo4;
}
else
if (x==2 && y==6){

ALGORITMIA Y PROGRAMACION SEMESTRE III TECNOLOGIA EN


ELECTRONICA
HUGO ANDREZ BUSTOS RESTREPO-1556165-2710

cout << "Donde desea ubicar el cubo: ";


cin >> xcubo5>>ycubo5;
}
else
if (x==3 && y==6){
cout << "Donde desea ubicar el cubo: ";
cin >> xcubo6>>ycubo6;
}
else
if (x==4 && y==6){
cout << "Donde desea ubicar el cubo: ";
cin >> xcubo7>>ycubo7;
}

else
if (x==5 && y==6){
cout << "Donde desea ubicar el cubo: ";
cin >> xcubo8>>ycubo8;
}
else
if (x==4 && y==5){
cout << "Donde desea ubicar el cubo: ";
cin >> xcubo9>>ycubo9;
}
Bodega(numero);
Derecha (numero);
}

ALGORITMIA Y PROGRAMACION SEMESTRE III TECNOLOGIA EN


ELECTRONICA
HUGO ANDREZ BUSTOS RESTREPO-1556165-2710