Практикум по курсу "Алгоритмизация и программирование". Часть 2. Андрианова А.А - 45 стр.

UptoLike

. Практикум по курсу «Алгоритмизация и программирование». Часть 2
printf("Введите номер стержня-источника (1,2 или 3):");
scanf("%d",&a);
printf("Введите номер стержня-приемника (1,2 или 3):");
scanf("%d",&b);
c=6-a-b;
if(n<=0)
{
printf("Введите положительное количество
колец.\n");
return;
}
if(a==b || a<=0 || a>3 || b<=0 || b>3)
{
printf("Неправильно введены номера стержней.\n");
printf("Стержни имеют номера 1, 2 или 3, и номера
стержней источника и приемника не совпадают.\n");
return;
}
HanoiTower(a,b,c,n);// вызов функции
printf("\n");
}
Рис. 2.6. Процесс переноса пирамиды со стержня a на стержень b.
// определение функции решения задачи о Ханойской башне
void HanoiTower(int a, int b, int c, int n)
{
if(n==1) // перенос одного кольца
printf("%d->%d\t",a,b);
else
{
// рекурсивный вызов функции
45
       .        Практикум по курсу «Алгоритмизация и программирование». Часть 2
     printf("Введите номер стержня-источника (1,2 или 3):");
     scanf("%d",&a);
     printf("Введите номер стержня-приемника (1,2 или 3):");
     scanf("%d",&b);
     c=6-a-b;
     if(n<=0)
     {
          printf("Введите положительное количество
                    колец.\n");
          return;
     }
     if(a==b || a<=0 || a>3 || b<=0 || b>3)
     {
          printf("Неправильно введены номера стержней.\n");
          printf("Стержни имеют номера 1, 2 или 3, и номера
          стержней источника и приемника не совпадают.\n");
          return;
     }
     HanoiTower(a,b,c,n);// вызов функции
     printf("\n");
}




    Рис. 2.6. Процесс переноса пирамиды со стержня a на стержень b.

// определение функции решения задачи о Ханойской башне
void HanoiTower(int a, int b, int c, int n)
{
      if(n==1) // перенос одного кольца
           printf("%d->%d\t",a,b);

     else
     {
            // рекурсивный вызов функции

                                  45