Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2011, 20:11   #1
Anubys
Форумчанин
 
Регистрация: 08.05.2010
Сообщений: 177
По умолчанию Протокол перестановок дисков в Ханойский башнях

Помогите подправить программу так чтобы после каждой перестановки выводилось содержимое всех 3 стержней на каждом шагу
Моя теория не сработала
Взгляните на код программы пожалуйста
Код:
void hanoi_towers(int quantity, int from,int h1,int a[], int to,int h2,int b[],
int buf_peg,int h3,int c[])
{
        ofstream file;
        file.open("Протокол перестановок.txt");
	if (quantity != 0)
	{
		hanoi_towers(quantity-1, from,h1,a, buf_peg,h2,b, to,h3,c);
		Form1->Memo1->Lines->Add(IntToStr(from)+" -> "+IntToStr(to)
                +"   | "+IntToStr(quantity));
                a[h1]=c[h3];
                for(int i=0;i<vol;i++)
                {
                        file << a[i] << '\t' << b[i] <<'\t'<<c[i]<<"\n";
                }
                file << "\n";
                file << "\n";
                hanoi_towers(quantity-1, buf_peg,h2-1,b, to,h3-1,c,from,h1-1,a);
	}
        file.close();
}

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N1Click(TObject *Sender)
{
        Memo1->Clear();
}
void Massive(int a[],int b[],int c[],int size)
{
        for(int i=0;i<size;i++)
        {
                a[i]=i+1;
                b[i]=0;
                c[i]=0;
        }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
	int start_peg, destination_peg, buffer_peg, plate_quantity;
           int a[5],b[5],c[5];
	start_peg = StrToInt(LabeledEdit1->Text);
	destination_peg = StrToInt(LabeledEdit2->Text);
	buffer_peg = StrToInt(LabeledEdit3->Text);
	plate_quantity = StrToInt(LabeledEdit4->Text);
           Massive(a,b,c,plate_quantity);
           vol=plate_quantity;
	hanoi_towers(plate_quantity, start_peg,5,a, destination_peg,5,b, buffer_peg,5,c);
}
Anubys вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм перестановок ArtGhost Помощь студентам 2 19.10.2013 10:56
Генерация перестановок vereney Паскаль, Turbo Pascal, PascalABC.NET 3 21.03.2011 21:04
Генератор перестановок cent Microsoft Office Excel 2 02.01.2009 11:09
генератор перестановок Narkotik Помощь студентам 4 26.11.2008 05:15
Рекурсивное решение задачи о Ханойских Башнях bullvinkle Помощь студентам 2 01.04.2008 13:09