Advertisement
Guest User

Untitled

a guest
Jul 21st, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.81 KB | None | 0 0
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <math.h>
  4.  
  5. using namespace std;
  6.  
  7.     int x[100];
  8.     int y[100];
  9.     int xf;
  10.     int yf;
  11.     int xx;
  12.     int yy;
  13.     int pos=0;
  14.     int a;
  15.     int b;
  16.     int aa;
  17.     int bb;
  18.     int dif;
  19.     int difu;
  20.     float dist1;
  21.     float dist2;
  22.     int c;
  23.     int sen;//1 arriba - 2 abajo - 3 derecha - 4 izquierda
  24.  
  25.     void distancia(){
  26.             if(dist1<dist2 || dist1==dist2){
  27.                 x[pos]=a;
  28.                 y[pos]=y[pos-1];
  29.             }
  30.             if(dist1>dist2){
  31.                 y[pos]=b;
  32.                 x[pos]=x[pos-1];
  33.             }
  34.         }
  35.  
  36. int main(){
  37.  
  38.     cout << "Puto el que use Python"<< endl;
  39.  
  40.     cout << "Ingrese coordenadas iniciales [x y]:" << endl;
  41.     cin >> x[0];
  42.     cin >> y[0];
  43.     cout << "Ingrese coordenadas finales [x y]:" << endl;
  44.     cin >> xf;
  45.     cin >> yf;
  46.  
  47.     system("pause");
  48.     system("cls");
  49.  
  50.     a=x[0];
  51.     b=y[0];
  52.     aa=x[0];
  53.     bb=y[0];
  54.  
  55.     while(x[pos]!=xf || y[pos]!=yf){
  56.  
  57.         a=x[pos];
  58.         b=y[pos];
  59.         aa=x[pos];
  60.         bb=y[pos];
  61.  
  62.         if((x[pos]%2)==0 || x[pos]==0){//si la calle vertical va para arriba
  63.                 b++;
  64.                 if((y[pos]%2)==0 || y[pos]==0){//si la calle horizontal va a la derecha
  65.                     a++;
  66.                 }else{//si la calle horizontal va a la izquierda
  67.                     a--;
  68.                 }
  69.  
  70.         }else{//si la calle vertical va para abajo
  71.                 b--;
  72.                 if((y[pos]%2)==0  || y[pos]==0){//si la calle horizontal va a la derecha
  73.                     a++;
  74.                 }else{//si la calle horizontal va a la izquierda
  75.                     a--;
  76.                 }
  77.  
  78.         }
  79.  
  80.         dist1=sqrt(pow((xf-a),2)+pow((yf-y[pos]),2));//distancia entre posicion posible y final si se mueve en el eje x
  81.         dist2=sqrt(pow((xf-x[pos]),2)+pow((yf-b),2));//distancia entre posicion posible y final si se mueve en el eje y
  82.  
  83.         if(pos!=0){ //REVISAR MENOS UNO
  84.             if(y[pos-1]<y[pos]){//arriba
  85.                 sen=1;
  86.             }
  87.             if(y[pos-1]>y[pos]){//abajo
  88.                 sen=2;
  89.             }
  90.             if(x[pos-1]<x[pos]){//derecha
  91.                 sen=3;
  92.             }
  93.             if(x[pos-1]>x[pos]){//izquierda
  94.                 sen=4;
  95.             }
  96.         }
  97.         cout << "pos" << "     x" << "     y" << "     a" << "     b" << "     dist1" << "     dist2" << endl ;
  98.         cout << pos << "       " << x[pos] << "     " << y[pos] << "     " << a << "     " << b << "     " << dist1 << "     " << dist2 << endl;
  99.  
  100.         pos++;
  101.         //*
  102.  
  103.         if(sen==1 || sen==2 || sen==3 || sen==4 ){
  104.             if(sen==1){//arriba
  105.                 difu=abs(yf-bb);
  106.                 bb++;
  107.                 dif=abs(yf-bb);
  108.                 if(difu>dif){
  109.                     cout << "arriba" << endl;
  110.                     y[pos]=bb;
  111.                     x[pos]=x[pos-1];
  112.                 }else{
  113.                     distancia();
  114.                 }
  115.             }
  116.             if(sen==2){//abajo
  117.                 difu=abs(yf-bb);
  118.                 bb--;
  119.                 dif=abs(yf-bb);
  120.                 if(difu>dif){
  121.                     y[pos]=bb;
  122.                     x[pos]=x[pos-1];
  123.                 }else{
  124.                     distancia();
  125.                 }
  126.             }
  127.             if(sen==3){//derecha
  128.                 difu=abs(yf-aa);
  129.                 aa++;
  130.                 dif=abs(yf-aa);
  131.                 if(difu>dif){
  132.                     x[pos]=aa;
  133.                     y[pos]=y[pos-1];
  134.                 }else{
  135.                     distancia();
  136.                 }
  137.             }
  138.             if(sen==4){//izquierda
  139.                 difu=abs(yf-aa);
  140.                 aa--;
  141.                 dif=abs(yf-aa);
  142.                 if(difu>dif){
  143.                     x[pos]=aa;
  144.                     y[pos]=y[pos-1];
  145.                 }else{
  146.                     distancia();
  147.                 }
  148.             }
  149.         }else{
  150.  
  151.             distancia();
  152.         }
  153.         cout << pos << "       " << x[pos] << "     " << y[pos] << "     " << a << "     " << b << "     " << dist1 << "     " << dist2 << endl;
  154.         cout << "------------------------------------------------------------------------------------" << endl;
  155.     }
  156.  
  157.  
  158.     cout << "Secuencia de movimientos elegida: " << endl;
  159.     for(c=0;c<pos;c++){
  160.         cout << "(" << x[c] << ";" << y[c] << ") " << endl;
  161.         if(x[c]<x[c+1]){
  162.             cout << "      Derecha" << endl;
  163.         }
  164.         if(x[c]>x[c+1]){
  165.             cout << "      Izquierda" << endl;
  166.         }
  167.         if(y[c]<y[c+1]){
  168.             cout << "      Arriba" << endl;
  169.         }
  170.         if(y[c]>y[c+1]){
  171.             cout << "      Abajo" << endl;
  172.         }
  173.     }
  174.  
  175.     cout << "(" << xf << ";" << yf << ")" << endl;
  176.  
  177.     return 0;
  178. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement