Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Error C2440: <function-style-cast>: невозможно преобразовать "unsigned int" в "std::bitset<_Bits>" http://www.cyberforum.ru/cpp-beginners/thread1167934.html
С++ Не работает программа! Задание было такое: напишите программу invert(p,x,n), возвращающую значение х с инвертированными n-битами, начиная с позиции p ( остальные биты не меняются). Ввожу, подчеркивает bitset и выдает такую ошибку: ] 1> Ни один конструктор не смог принять исходный тип, либо разрешение перегрузки конструктора неоднозначно 1> error C2440: <function-style-cast>: невозможно...
C++ Сортировка по сумме вклада и дате вклада, зацикливание Требуется создать программу, которая будет загружать из dat файла значения в массив. Затем сортируется по сумме вклада и по дате вклада через индексные массивы. В оперативную прогружается, а дальше зацикливается толи что, в общем с ошибкой вылетает. гляньте пожалуйста) #include <stdio.h> #include <stdlib.h> #include <iostream> #include <conio.h> // База данных "Обманутые дольщики" using... http://www.cyberforum.ru/cpp-beginners/thread1167927.html
C++ Найти общую стоимость товаров, которые дороже 1000 рублей (количество товаров не известно)
Заданы, функцией rand(), стоимости товаров в группе. Найти общую стоимость товаров, которые дороже 1000 рублей (количество товаров не известно).
Возможно ли подгрузить библиотеку так, чтоб компоновщик подгружал функции из основной программы? C++
Всем привет! Хотелось бы узнать, возможно ли подгрузить библиотеку так, чтоб компоновщик подгружал функции из основной программы? Допустим есть класс A, который собирается в основной программе. Основная программа подгружает динамическую библиотеку, создаёт объект класса A, и передаёт в метод который объявлен в библиотеке указатель на данный объект. Библиотека же не сможет вызывать...
C++ Перенести k-ый элемент в конец массива (k-вводится с клавиатуры) http://www.cyberforum.ru/cpp-beginners/thread1167893.html
Динамическая память. Одномерный массив. Перенести k-ый элемент в конец массива (k-вводится с клавиатуры). если не трудно можете прокомментировать каждое действие а то я совсем нуб
C++ Определить является ли сумма элементов диагонали меньше 100 Статическая память. Двумерный массив. Массив квадратный. Определить является ли сумма элементов диагонали меньше 100. Добавлено через 1 минуту если не трудно можете прокомментировать каждое действие а то я совсем нуб подробнее

Показать сообщение отдельно
lemegeton
2918 / 1347 / 134
Регистрация: 29.11.2010
Сообщений: 2,721
10.04.2016, 01:47     Задача Ханойская башня. Написать порядок действий в графической интерпритации
Цитата Сообщение от 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;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru