Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. Managed C++/CLI
  4. I want to make a hanoi tower to graphic but I have a problem

I want to make a hanoi tower to graphic but I have a problem

Scheduled Pinned Locked Moved Managed C++/CLI
help
1 Posts 1 Posters 10 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    mike4403
    wrote on last edited by
    #1

    I want to make a hanoi tower to graphic but I have a problem

    the tower don't work well, So I wan't to get some help of you.

    I made this by C, and I take my code under this article

    thank you.

    #define _CRT_SECURE_NO_WARNINGS #include #define FROM 0 #define TEMP 1 #define TO 2 #define MAXDISK 10 typedef struct { int count; int buffer[MAXDISK]; } ROD; ROD rod[3] = { 0,}; void hanoi(int n, int disknum, int rodFrom, int rodTemp, int rodTo); void moveDisk(int diskNum, int rodFrom, int rodTo); void removeDisk(int diskNum, int rodFrom); void addDisk(int diskNum, int rodTo); void printProcess(int diskNum); int main() { int n = 0; printf("number of disk : "); scanf("%d", &n); for (int i = 0; i < 3; i++) { for (int j = 0; j < n; j++) { rod[i].buffer[j] = 0; } } rod[0].count = n; for (int i = 0; i < n; i++) { rod[0].buffer[i] = i+1; } rod[1].count = 0; rod[2].count = 0; printProcess(n); hanoi(n, n, FROM, TEMP, TO); return 0; } void hanoi(int n, int disknum, int rodFrom, int rodTemp, int rodTo) { moveDisk(n, rodFrom, rodTo); hanoi(n, disknum-1 , rodFrom, rodTo, rodTemp); hanoi(n, disknum-1 , rodTemp, rodFrom, rodTo); } void moveDisk(int diskNum, int rodFrom, int rodTo) { removeDisk(diskNum, rodFrom); addDisk(diskNum, rodTo); printProcess(diskNum); } void removeDisk(int diskNum, int rodFrom) { rod[rodFrom].count -= 1; rod[rodFrom].buffer[rod[rodFrom].count] = 0; } void addDisk(int diskNum, int rodTo) { rod[rodTo].buffer[rod[rodTo].count] = diskNum ; rod[rodTo].count += 1; } void printProcess(int diskNum) { for (int i = 9; i >= 0; i--) { for (int m = 0; m < 3; m++) { if (rod[m].buffer[i] == 0) { printf(" + "); } else { for (int q = 0; q < 10 - diskNum + rod[m].buffer[i] - 1; q++) { printf(" "); } for (int q = 0; q < diskNum - rod[m].buffer[i] + 1; q++) { printf("-"); } printf("+"); for (int q = 0; q < diskNum - rod[m].buffer[i] + 1; q++) { printf("-"); } for (int q = 0; q < 10 - diskNum + rod[m].buffer[i] - 1; q++) { printf(" "); } } } printf("\n"); } printf("\n"); }

    1 Reply Last reply
    0
    Reply
    • Reply as topic
    Log in to reply
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes


    • Login

    • Don't have an account? Register

    • Login or register to search.
    • First post
      Last post
    0
    • Categories
    • Recent
    • Tags
    • Popular
    • World
    • Users
    • Groups