Avdeeva Inga1505
?>

Спро ханойские башни расписать порядок ходов для перекладывания 5 дисков со второго стержня на третий. если что, 31 ход всего.

Информатика

Ответы

МихайловнаМетельков328
Крутить это все в уме - чистое наказание. Проще было написать программу.

// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!

type
  Pinnacle=record
    St:Stack<integer>;
    No:integer;
  constructor (n:integer);
  begin
    St:=new Stack<integer>;
    No:=n
  end;
end;
 
var
  MoveNo:integer;

procedure MoveDisk(s1,s2:Pinnacle);
begin
  if s1.St.Count>0 then begin
    MoveNo+=1;
    s2.St.Push(s1.St.Pop);
    Writeln(MoveNo:3,': №',s2.St.Peek,' ',s1.No,' -> ',s2.No)
    end
end;
   
procedure MovePinnacle(n:integer; s1,s2,s3:Pinnacle);
begin
  if n=0 then exit;
  MovePinnacle(n-1,s1,s3,s2);
  MoveDisk(s1,s2);
  MovePinnacle(n-1,s3,s2,s1);
end;

begin
  var n:=5;
  var p1:=new Pinnacle(1);
  var p2:=new Pinnacle(2);
  var p3:=new Pinnacle(3);
  Range(n,1,-1).ForEach(i->p2.St.Push(i));
  MoveNo:=0;
  MovePinnacle(n,p2,p3,p1);
end.

Результат работы
  1: №1 2 -> 3
  2: №2 2 -> 1
  3: №1 3 -> 1
  4: №3 2 -> 3
  5: №1 1 -> 2
  6: №2 1 -> 3
  7: №1 2 -> 3
  8: №4 2 -> 1
  9: №1 3 -> 1
 10: №2 3 -> 2
 11: №1 1 -> 2
 12: №3 3 -> 1
 13: №1 2 -> 3
 14: №2 2 -> 1
 15: №1 3 -> 1
 16: №5 2 -> 3
 17: №1 1 -> 2
 18: №2 1 -> 3
 19: №1 2 -> 3
 20: №3 1 -> 2
 21: №1 3 -> 1
 22: №2 3 -> 2
 23: №1 1 -> 2
 24: №4 1 -> 3
 25: №1 2 -> 3
 26: №2 2 -> 1
 27: №1 3 -> 1
 28: №3 2 -> 3
 29: №1 1 -> 2
 30: №2 1 -> 3
 31: №1 2 -> 3

Иллюстрация первых пяти шагов приведена во вложении.

Спро ханойские башни расписать порядок ходов для перекладывания 5 дисков со второго стержня на трети
tigran87-87
1) а) на Java
class example{
    public static void main (String[] args){
        int k = 0, j = 0;
        for (int i = 0; i < 10; i++){
            k = k + 5;
            j = j + k;
            if (i == 9)
            System.out.print(k);
            else
            System.out.print(k + " + ");
        }
        System.out.print(" = " + j);
    }
}
б) на Pascal
var a,b,c:integer;
begin
for a:=1 to 10 do
begin
b:=b+5;
c:=c+b;
if (a = 10) then write(b)
else write(b, ' + ')
end;
write(' = ', c);
end.
2) а) на Java
class example{
    public static void main(String args[]){
        for (int x = 50; x >= 40; x--){
        double y = (5 * x) + (Math.pow(x, 2));
        int i = (int) y;
        System.out.println(i);
        }
    }
}
б) на Pascal
var y:real;
x:integer;
begin
for x:=50 downto 40 do
begin
y:=(5*x)+sqr(x);
writeln(y:0:0);
end;
end.
roman-fetisov2005

1.y=m1*m2/Sqr(r)

2. Program my;

var S,a,b,h:real;

begin

write('Введите длины оснований и высоты');

readln(a,b,h);

S:=(a+b)*h/2;

readln(S);

end.

3. Program my;

var a:integer;

begin

writeln('Введите трехзначное число');

readln(a);

If (a mod 10=7) then write('Данное число заканчивается на 7');

else write('Данное число не заканчивается на 7');

end.

4.Program my;

var a,b,:integer;

begin

readln(a,b);

If (a>b) then writeln(Sqr(a), b+10);

If (a=b) then writeln('Числа равны');

If (a<b) then writeln(Sqr(b), a+10);

end.

5. 

Program my;
var a,b,c:integer;
begin
Readln(a,b);
For c:=a to b do
if (c mod 10=0) then
writeln (c);
end.

 

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Спро ханойские башни расписать порядок ходов для перекладывания 5 дисков со второго стержня на третий. если что, 31 ход всего.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Inozemtseva Korolev1271
baranova302
manager9
teashop
Savelieva24
denspiel
TatiyanaBe20135263
zorinka777
mereninka7008
purchase
cochana
ИгоревичАндрей
sensenagon50
sveremeev816
st7307