Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Chrom1996
0 / 0 / 0
Регистрация: 06.05.2014
Сообщений: 16
1

Задача Ханойская башня. Написать порядок действий в графической интерпритации

06.05.2014, 13:16. Просмотров 1491. Ответов 7
Метки нет (Все метки)

День добрый! Учусь на 1 курсе ИВТ. Препод по программированию дал для общего развития написать прогу по ханойской башне в консоли. Но нужно вывести не просто решение, а графически нарисовать. То есть нужно написать порядок действий в графической интерпритации. Что-то типо такого:
*
***
***** ..... .....


***
**** ...... ..*...


***** .***. ..*..
Ну и так далее...кто может помогите пожалуйста...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2014, 13:16
Ответы с готовыми решениями:

Ханойская башня
Все вы видели башню Ханоя(если нет, то есть в гугл :D ) . У вас есть 3 столпа...

Ханойская башня
Легенда гласит, что, в Великом храме города Бенарас, под собором, отмечающим...

Ханойская башня
Использование переборных методов (разработка программ решения задачи «Ханойская...

Ханойская башня
Здравствуйте! Скажите пожалуйста как можно реализовать решение для ханойской...

Ханойская башня
Ханойская башня является одной из популярных головоломок XIX века. Даны три...

7
Kuzia domovenok
2337 / 2079 / 487
Регистрация: 25.03.2012
Сообщений: 7,441
Записей в блоге: 1
06.05.2014, 14:06 2
а в каком виде хранится инвормация о башнях? В каких переменных, структурах? Покажи пример кода.
0
Chrom1996
0 / 0 / 0
Регистрация: 06.05.2014
Сообщений: 16
06.05.2014, 15:43  [ТС] 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{   setlocale(0,"RUS");
    int q=0;
    char t='*';
    cout<<"Введите кол-во дисков: ";
    cin>>q;
    int w,i;
    for(int k=0;k<q;k++)
    {   for(w=0;w<q-k;w++)
        {   cout<<" ";
        }
        for(i=0;i<k+1;i++)
        {   cout<<t<<" ";
        }
        cout<<"\n";
    }   
    cout<<"____________________________________________________________"<<"\n";
    return 0;
}
Ну вот допустим кусок для рисования самой пирамиды. Теперь надо сделать как-то так https://www.dropbox.com/s/nc6hm8jm0ua4s5x/Tower.exe
Это в принципе программа которую написал мой препод. Вот мне нужно сделать что-то подобное.
0
Kuzia domovenok
2337 / 2079 / 487
Регистрация: 25.03.2012
Сообщений: 7,441
Записей в блоге: 1
06.05.2014, 16:08 4
Chrom1996, я правильно понимаю, что задачу о башнях ты вообще не решал, а тот "вывод пирамидки", что ты мне показываешь это вообще всё, что у тебя есть?

Добавлено через 4 минуты
я предлагаю хранить инфу о пирамидках, например в структуре. (структуры-то ты, надеюсь, изучал в школе?)
Или, если не изучал структуры, хранить в массиве
C++
1
2
const int numof_towers=3, numof_rings=8;
int towers[numof_towers][numof_rings];
соответственно функция вывода будет
C++
1
2
3
4
void output(int tow_params[numof_towers][numof_rings]){
  //и далее выводишь все три башни одновременно построчно
  
}
1
Chrom1996
0 / 0 / 0
Регистрация: 06.05.2014
Сообщений: 16
06.05.2014, 16:42  [ТС] 5
Да это все что у меня есть. Как бы алгоритм решения я знаю, но вот в программном коде как представить непонятно). Структуры и массивы изучал в универе уже)

Добавлено через 4 минуты
C++
1
2
3
4
void output(int tow_params[numof_towers][numof_rings]){
  //и далее выводишь все три башни одновременно построчно
  
}
Вот это не совсем понял...Можно поподробней?
0
Chrom1996
0 / 0 / 0
Регистрация: 06.05.2014
Сообщений: 16
07.05.2014, 19:27  [ТС] 6
Я не совсем понял, что именно вы предлагает. Можете более популярно объяснить? Я только 1 семестр программирование изучаю, поэтому не всегда все сразу понимаю...
0
Liss29
27 / 16 / 4
Регистрация: 18.11.2012
Сообщений: 593
Завершенные тесты: 1
09.04.2016, 23:26 7
Может кто-нибудь уделит время мне, с этими башнями совсем запутался, ничего не получается завис конкретно. Не понимаю как решать подобную задачу...
0
lemegeton
2933 / 1362 / 467
Регистрация: 29.11.2010
Сообщений: 2,725
10.04.2016, 01:47 8
Цитата Сообщение от Chrom1996 Посмотреть сообщение
Как бы алгоритм решения я знаю, но вот в программном коде как представить непонятно
Понимаю. Алгоритм простейший, примеров полно, кода минимум... А как написать -- непонятно.

Как-то так:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// заголовки причешите, тут всё подряд
#include <stdexcept>
#include <cassert>
#include <fstream>
#include <chrono>
 
#include <vector>
#include <cstdlib>
#include <ctime>
#include <cstring>
#include <algorithm>
#include <iterator>
#include <cmath>
#include <cstring>
#include <iostream>
#include <iomanip>
 
template<class Callback>
void solveHanoi(unsigned size, unsigned source, unsigned destination, 
    unsigned third, Callback &callback) {
  if (size > 1) {
    solveHanoi(size - 1, source, third, destination, callback);
    callback(source, destination);
    solveHanoi(size - 1, third, destination, source, callback); 
  } else {
    callback(source, destination);
  }
}
 
struct HanoiTrackingCallback {
  
  unsigned stacks[3];
 
  HanoiTrackingCallback(unsigned size, unsigned first) {
    for (unsigned i = 0; i < 3; ++i) {
      stacks[i] = 0;
    }
    stacks[first] = size;
  }
  
  void operator()(unsigned source, unsigned destination) {
    std::cout << "Moving from " << source << " to " << destination << "." << std::endl;
    stacks[source]--;
    stacks[destination]++;
    for (unsigned i = 0; i < 3; ++i) {
      for (unsigned j = 0; j < stacks[i]; ++j) {
        std::cout << "*";
      }
      std::cout << std::endl;
    }
  }
};
 
int main(int, char**) {
  srand(time(0));
 
  HanoiTrackingCallback callback(4, 0);
  callback(0, 0); // это чтобы первую нарисовать
  solveHanoi(4, 0, 1, 2, callback);
 
  return 0;
}
0
10.04.2016, 01:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2016, 01:47

Ханойская башня
23. Написать программу, которая печатает последовательность действий (в виде...

Ханойская башня
Добрый день! Помогите решить задачку про ханойскую башню. Надо написать...

Ханойская башня
Здравтвуйте! Нужно решить задачу где на вход дано Н стержней и К дисков и еще...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru