Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <windows.h>
- #include <math.h>
- using namespace std;
- int x[100];
- int y[100];
- int xf;
- int yf;
- int xx;
- int yy;
- int pos=0;
- int a;
- int b;
- int aa;
- int bb;
- int dif;
- int difu;
- float dist1;
- float dist2;
- int c;
- int sen;//1 arriba - 2 abajo - 3 derecha - 4 izquierda
- void distancia(){
- if(dist1<dist2 || dist1==dist2){
- x[pos]=a;
- y[pos]=y[pos-1];
- }
- if(dist1>dist2){
- y[pos]=b;
- x[pos]=x[pos-1];
- }
- }
- int main(){
- cout << "Puto el que use Python"<< endl;
- cout << "Ingrese coordenadas iniciales [x y]:" << endl;
- cin >> x[0];
- cin >> y[0];
- cout << "Ingrese coordenadas finales [x y]:" << endl;
- cin >> xf;
- cin >> yf;
- system("pause");
- system("cls");
- a=x[0];
- b=y[0];
- aa=x[0];
- bb=y[0];
- while(x[pos]!=xf || y[pos]!=yf){
- a=x[pos];
- b=y[pos];
- aa=x[pos];
- bb=y[pos];
- if((x[pos]%2)==0 || x[pos]==0){//si la calle vertical va para arriba
- b++;
- if((y[pos]%2)==0 || y[pos]==0){//si la calle horizontal va a la derecha
- a++;
- }else{//si la calle horizontal va a la izquierda
- a--;
- }
- }else{//si la calle vertical va para abajo
- b--;
- if((y[pos]%2)==0 || y[pos]==0){//si la calle horizontal va a la derecha
- a++;
- }else{//si la calle horizontal va a la izquierda
- a--;
- }
- }
- dist1=sqrt(pow((xf-a),2)+pow((yf-y[pos]),2));//distancia entre posicion posible y final si se mueve en el eje x
- dist2=sqrt(pow((xf-x[pos]),2)+pow((yf-b),2));//distancia entre posicion posible y final si se mueve en el eje y
- if(pos!=0){ //REVISAR MENOS UNO
- if(y[pos-1]<y[pos]){//arriba
- sen=1;
- }
- if(y[pos-1]>y[pos]){//abajo
- sen=2;
- }
- if(x[pos-1]<x[pos]){//derecha
- sen=3;
- }
- if(x[pos-1]>x[pos]){//izquierda
- sen=4;
- }
- }
- cout << "pos" << " x" << " y" << " a" << " b" << " dist1" << " dist2" << endl ;
- cout << pos << " " << x[pos] << " " << y[pos] << " " << a << " " << b << " " << dist1 << " " << dist2 << endl;
- pos++;
- //*
- if(sen==1 || sen==2 || sen==3 || sen==4 ){
- if(sen==1){//arriba
- difu=abs(yf-bb);
- bb++;
- dif=abs(yf-bb);
- if(difu>dif){
- cout << "arriba" << endl;
- y[pos]=bb;
- x[pos]=x[pos-1];
- }else{
- distancia();
- }
- }
- if(sen==2){//abajo
- difu=abs(yf-bb);
- bb--;
- dif=abs(yf-bb);
- if(difu>dif){
- y[pos]=bb;
- x[pos]=x[pos-1];
- }else{
- distancia();
- }
- }
- if(sen==3){//derecha
- difu=abs(yf-aa);
- aa++;
- dif=abs(yf-aa);
- if(difu>dif){
- x[pos]=aa;
- y[pos]=y[pos-1];
- }else{
- distancia();
- }
- }
- if(sen==4){//izquierda
- difu=abs(yf-aa);
- aa--;
- dif=abs(yf-aa);
- if(difu>dif){
- x[pos]=aa;
- y[pos]=y[pos-1];
- }else{
- distancia();
- }
- }
- }else{
- distancia();
- }
- cout << pos << " " << x[pos] << " " << y[pos] << " " << a << " " << b << " " << dist1 << " " << dist2 << endl;
- cout << "------------------------------------------------------------------------------------" << endl;
- }
- cout << "Secuencia de movimientos elegida: " << endl;
- for(c=0;c<pos;c++){
- cout << "(" << x[c] << ";" << y[c] << ") " << endl;
- if(x[c]<x[c+1]){
- cout << " Derecha" << endl;
- }
- if(x[c]>x[c+1]){
- cout << " Izquierda" << endl;
- }
- if(y[c]<y[c+1]){
- cout << " Arriba" << endl;
- }
- if(y[c]>y[c+1]){
- cout << " Abajo" << endl;
- }
- }
- cout << "(" << xf << ";" << yf << ")" << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement