142-Mouse Clicks

All about problems in Volume I. If there is a thread about your problem, please use it. If not, create one with its number in the subject.

Moderator: Board moderators

142-Mouse Clicks

Postby Sebas » Wed Jun 09, 2010 7:01 am

Hi I was testing with the uva bot, and I always get the same results, can anyone tell what is wrong with my program
Code: Select all
#include <iostream>
#include <deque>
#include <math.h>

struct region {
   float x,y,x1,y1;
   char nombre;
   region(float a,float b,float c,float d,char e){
      x=a; y=b; x1=c; y1=d;
      nombre=e;;
   }
   
   
};

struct icono{
   float x,y;
   int nombre;
   icono(int a,int b,int c){x=a; y=b; nombre=c;}

};

typedef std::deque<region*> regiones;
typedef std::deque<icono*> iconos;
typedef std::deque<region*>::iterator it_regiones;
typedef std::deque<icono*>::iterator it_iconos;

regiones m_regiones;
iconos m_iconos;
it_regiones it_m_regiones;
it_iconos it_m_iconos;
char lista[30]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";

int main (int argc, char * const argv[]) {
   float alfa,beta,gama,delta;
   float max_iconos=sqrt(pow(499,2)+pow(499,2));
   int resultados=0;
   int contador_r=0;
   int contador_i=1;
   bool final=0;
   char cod[60];
   std::deque<int> resul_iconos;
   bool x=1;
   scanf("%s",cod);

      while(std::strcmp(cod,"#")!=0){
         if(final) strcpy(cod,"M");
         if (strcmp(cod,"R")==0) {
            scanf("%f",&alfa);
            scanf("%f",&beta);
            scanf("%f",&gama);
            scanf("%f",&delta);
            region *temp=new region(alfa,beta,gama,delta,lista[contador_r]);
            m_regiones.push_front(temp);
            contador_r++;
         }
         
         if (strcmp(cod, "I")==0) {
            scanf("%f",&alfa);
            scanf("%f",&beta);
            icono *temp1=new icono(alfa,beta,contador_i);
            m_iconos.push_back(temp1);
            contador_i++;
         }
         if (strcmp(cod,"M")==0) {
            final=1;
            resultados++;
            region*t1=0;
            scanf("%f",&alfa);
            scanf("%f",&beta);
            for (it_m_regiones=m_regiones.begin();it_m_regiones!=m_regiones.end();it_m_regiones++) {
               if((*it_m_regiones)->x<=alfa&&(*it_m_regiones)->x1>=alfa &&(*it_m_regiones)->y<=beta&&(*it_m_regiones)->y1>=beta){
               
                  t1=*it_m_regiones;
                  //m_regiones.erase(it_m_regiones);
                  //m_regiones.push_front(*it_m_regiones);
                  printf("%s \n",&(t1->nombre));
                  x=false;
                  break;
               }
               
            }
            if (x) {
               
               for (it_m_iconos=m_iconos.begin();it_m_iconos!=m_iconos.end(); it_m_iconos++) {
                  float t2=sqrt(pow((*it_m_iconos)->x-alfa,2)+pow((*it_m_iconos)->y-beta,2));
                  
                  if (max_iconos==t2) {
                     resul_iconos.push_back((*it_m_iconos)->nombre);
                  }
                  if (max_iconos>t2) {
                     max_iconos=t2;
                     resul_iconos.clear();
                     resul_iconos.push_back((*it_m_iconos)->nombre);
                  }
               
               }
               
               for (std::deque<int>::iterator it=resul_iconos.begin();it!=resul_iconos.end();it++) {
                  printf("%3d",(*it));
               }
               std::cout<<std::endl;
            }
            x=1;
            max_iconos=sqrt(pow(499,2)+pow(499,2));
            
         }
      
         scanf("%s",cod);
      }
   
   
   for (it_m_iconos=m_iconos.begin();it_m_iconos!=m_iconos.end(); it_m_iconos++) {
      delete (*it_m_iconos);
   }
   
   for (it_m_regiones=m_regiones.begin();it_m_regiones!=m_regiones.end();it_m_regiones++) {
      delete (*it_m_regiones);
   }
   
   return 0;
}


Regards
Sebas
New poster
 
Posts: 2
Joined: Tue Jun 08, 2010 2:56 am

Return to Volume I

Who is online

Users browsing this forum: No registered users and 1 guest