Показать сообщение отдельно

  #597  
Старый 06.06.2008, 15:05
plat
Новичок
Регистрация: 04.06.2008
Сообщений: 6
С нами: 9439235

Репутация: 1
По умолчанию

Цитата:
Сообщение от Delimiter  
хммм .... классы тут как-то боком!
их придется впихивать совсем без их преимуществ


давай набросаю суть а ты ее засунешь хоть в классы , хоть в мусорку!

будем обозначать символами
a-кресло(arm chair)
c-стул(chair)
t-стол(table)
s-шкаф(shelves)

Код:
#defane MAX_STEPS 50
char a[3][3]; //третий ряд забит нулями
char steps[MAX_STEPS][7];
char rez[3][3];

int abs(int numb)
{
   if(numb<0)
     return numb*(-1);
   else
    return numb;
}
void step(int step,int pusto_x,int pusto_y)
{
   int i,j,k;
   if(steps<MAX_STEPS-1)
   {
      for(i=0;i<2;i++)
         for(j=0;j<3;j++)
           if(i!=pusto_y || j!=pusto_x)
             if(i==pusto_y || j==pusto_x)
              if(abs(pusto_x-j)==1)
              {
                 // могем менять местами
                 a[pusto_y][pusto_x]=a[i][j];
                 a[i][j]=' ';
                 for(k=0,fl=0;k<MAX_STEPS && strlen((char *)&steps[k][0])>6 && fl==0;k++)
                 if(strcmp(a,rez)==0)
                    fl=1;
                 if(strcmp(a,rez)==0)
                 {
                     // вываливай весь steps
                     // хоть в файл хоть на печать 
                     fl=1;
                 }
                 if(fl==0)
                 {
                   strcpy((char *)&steps[k][0],a);
                   step(step+1,j,i);
                   strcpy((char *)&steps[k][0],"");
                 }
                 a[i][j]=a[pusto_y][pusto_x];
                 a[pusto_y][pusto_x]=' ';
              } 
  }
   else
     return ;
}

void main()
{
  int i,j;
  // подготавливаем массивы
  for(i=0;i<MAX_STEPS;i++)
    strcpy((char *)&steps[i][0],"");
  a[0][0]='t'; // исходный массив
  a[0][1]='c';
  a[0][2]='s';
  a[1][0]='c';
  a[1][1]=' ';
  a[1][2]='a';
  a[2][0]=0;  // забиваем нулями для того чтобы
  a[2][1]=0;  // сформировалась идентифицирующая строка
  a[2][2]=0;
   rez[0][0]='t'; // массив который нужно получить
   rez[0][1]='c';
   rez[0][2]='a';
   rez[1][0]='c';
   rez[1][1]=' ';
   rez[1][2]='s';
   rez[2][0]=0;  // забиваем нулями с целью как и
   rez[2][1]=0;  // для массива a
   rez[2][2]=0;
  steps(0,1,1);
}
КОД НЕ ПРОВЕРЯЛ!!! БИЛ ПРЯМО В ОКНО СООБЩЕНИЙ!

ну мне простительно у меня репутация маленькая
да и решение таких задач тут дешево стоит!
Спасибо большущее!!!...но все же...пожалуйста...можно и эту программу тоже поподробнее..нам давали только теорию практически...примеров совсем мало...на классы дали только пример класса комплексного числа...я сам понимаю, что в принципе там классы ни к чему...но надо чтобы прога была обязательно с ними...
я с классами совсем пока не дружу...а задачу надо в понедельник сдать...
Заранее спасибо!
 
Ответить с цитированием