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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

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

Я подумал что выложить решение этой задачи на форум будет весьма актуальной инфой, саму задачу и условие вы можете посмотреть в названии темы.
И так код программы:
Код:
#include <fstream.h>
#include <vcl.h>
#pragma hdrstop

#include "UTheory_of_algorithms_Lab_number_7.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
int First[10]={10,9,8,7,6,5,4,3,2,1},Second[10]={0,0,0,0,0,0,0,0,0,0},Third[10]={0,0,0,0,0,0,0,0,0,0};
int first=0,second=0,third=0;
ofstream output("A.txt");
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void hanoi_towers(int quantity, int from, int to, int buf_peg) 
{                                                               
        if (quantity != 0)
        {
                hanoi_towers(quantity-1, from, buf_peg, to);
                switch (from)
                {
                        case 1: First[first-1]=0;first--; break;
                        case 2: Second[second-1]=0;second--; break;
                        case 3: Third[third-1]=0;third--; break;
                }
                switch (to)
                {
                        case 1: First[first]=quantity;first++; break;
                        case 2: Second[second]=quantity;second++; break;
                        case 3: Third[third]=quantity;third++; break;
                }
                for(int i = 0; i < 10; i++)
                {
                        output<<First[i]<<"  ";
                }
                output<<"\n";
                for(int i = 0; i < 10; i++)
                {
                        output<<Second[i]<<"  ";
                }
                output<<"\n";
                for(int i = 0; i < 10; i++)
                {
                        output<<Third[i]<<"  ";
                }
                output<<"\n";
                output<<"---------------------------"<<"\n";
                hanoi_towers(quantity-1, buf_peg, to, from);

        }

}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
        int diski;
        diski = StrToInt(LabeledEdit1->Text);
        first=diski;
        hanoi_towers(diski,1,3,2);
        output.close();        
}
//---------------------------------------------------------------------------
Anubys вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ханойские башни на делфи Andrey1992 Помощь студентам 3 14.05.2011 12:11
С. Ханойские башни псевдографика jimmywoodes Общие вопросы C/C++ 0 19.06.2010 21:15
Ханойские башни fs444 Общие вопросы C/C++ 10 30.03.2010 16:02
Ханойские башни.С++ nN1 Помощь студентам 1 09.11.2009 19:51
Ханойские башни Vistar Паскаль, Turbo Pascal, PascalABC.NET 2 23.05.2009 02:05