niedziela, 17 czerwca 2018

Sorting different types and connecting to records (C++ Builder)



void Change(char*text1,char*text2)
{
char temp[40]; 
strcpy(temp, text1);
strcpy(text1,text2);
strcpy(text2,temp);
}
void sort_Char(char **text, int size)
{
 int i,j;
 for(int i=0;i<size;i++)
 {
  for (int j=i;j<size;j++)
  {
   if(strcmp(text[i],text[j])>0)
   Change(text[i],text[j]);
  }
 }
}


void double_Sort(double *table, int size)
{
 int i,j;
 double temp;
 for(i=1;i<size;i++)
  for(j=size-1;j>=i;j--)
   if(table[j]<table[j-1])
   {
    temp=table[j-1];
    table[j-1]=table[j];
    table[j]=temp;
   }

}

void int_Sort(int *table, int size)
{
 int i,j;
 int temp;
 for(i=1;i<size;i++)
  for(j=size-1;j>=i;j--)
   if(table[j]<table[j-1])
   {
    temp=table[j-1];
    table[j-1]=table[j];
    table[j]=temp;
   }

}
struct Planet
{
char name[20];
int radius;
double mass_Earth;
};
struct Planet *m_Planet;

void __fastcall TForm1::FormCreate(TObject *Sender)
{
  int i,j;
  m_Planet=new struct Planet[8];
 strcpy(m_Planet[0].name,"Mercury");
 m_Planet[0].radius=2440;
 m_Planet[0].mass_Earth=0.055;
 strcpy(m_Planet[1].name,"Venus");
 m_Planet[1].radius=6052;
 m_Planet[1].mass_Earth=0.815;
 strcpy(m_Planet[2].name,"Earth");
 m_Planet[2].radius=6371;
 m_Planet[2].mass_Earth=1.00;
 strcpy(m_Planet[3].name,"Mars");
 m_Planet[3].radius=3390;
 m_Planet[3].mass_Earth=0.107;
 strcpy(m_Planet[4].name,"Jupiter");
 m_Planet[4].radius=69911;
 m_Planet[4].mass_Earth=317.8;
 strcpy(m_Planet[5].name,"Saturn");
 m_Planet[5].radius=58232;
 m_Planet[5].mass_Earth=95.16;
 strcpy(m_Planet[6].name,"Uranium");
 m_Planet[6].radius=25362;
 m_Planet[6].mass_Earth=14.54;
 strcpy(m_Planet[7].name,"Neptune");
 m_Planet[7].radius=24622;
 m_Planet[7].mass_Earth=17.15;
 for(i=0;i<8;i++)
 {
  ListBox1->Items->Add(m_Planet[i].name);
  ListBox2->Items->Add(IntToStr(m_Planet[i].radius));
  ListBox3->Items->Add(FloatToStr(m_Planet[i].mass_Earth));
 }
 int temp_Radius[8];
 double temp_Mass[8];
 char **temp_Name;
 temp_Name=new char*[40];
 for(i=0;i<40;i++)
  temp_Name[i]=new char[8];
 for(i=0;i<8;i++)
 {
  temp_Radius[i]=m_Planet[i].radius;
  temp_Mass[i]=m_Planet[i].mass_Earth;
  strcpy(temp_Name[i],m_Planet[i].name);
 }
 double_Sort(temp_Mass,8);
 int_Sort(temp_Radius,8);
 sort_Char(temp_Name,8);

 for(i=0;i<8;i++)
 {
  ListBox4->Items->Add(temp_Name[i]);
  for(j=0;j<8;j++)
  {
   if(temp_Radius[i]==m_Planet[j].radius)
   {
    ListBox5->Items->Add(IntToStr(temp_Radius[i])+"  -  "+m_Planet[j].name);
    break;
   }

  }
  for(j=0;j<8;j++)
  {
   if(temp_Mass[i]==m_Planet[j].mass_Earth)
   {
    ListBox6->Items->Add(FloatToStr(temp_Mass[i])+"  -  "+m_Planet[j].name);
    break;
   }
  }
 }



}

Brak komentarzy:

Prześlij komentarz