Recent Posts

Code C-C++: Bài toán Tháp Hà Nội

-

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

#define MAX 12
#define BegPos   105
#define AuxPos   305
#define EndPos   505

int width;
typedef struct disc
  {
char val1[MAX];
char top,pos;
};

void push(disc *tt,int x);
pop(disc *tt);
void tower(int,disc *,disc *,disc *);
void draw_stack(disc *beg,disc *,disc *);
int main(void)
{

   int gdriver = DETECT, gmode, errorcode;
   int i,x=2;
   disc beg,end,aux;
   printf("

TOWER OF HANOI
");
   printf("=======================================================");
   printf("

How Many Disks[1-10]:-  ");
   scanf("%d",&x);

   initgraph(&gdriver, &gmode, "d:\TC\BGI");
   errorcode = graphresult();
   if (errorcode != grOk)
   {
 printf("Graphics error: %s
", grapherrormsg(errorcode));
 printf("Press any key to halt:");
 getch();
 exit(1);
   }
width=50/x;

beg.top=end.top=aux.top=0;
beg.pos=1;end.pos=3;aux.pos=2;

for(i=0;i<x;i++)
push(&beg,(x-i)+1);

draw_stack(&beg,&end,&aux);
tower(x,&beg,&end,&aux);

   closegraph();
   return 0;
}
void tower(int n,disc *beg,disc *aux,disc *end)
{
if(n>0)
/* {
push(end,pop(beg));
draw_stack(beg,end,aux);
}
else*/
{
tower(n-1,beg,end,aux);
push(end,pop(beg));
draw_stack(beg,end,aux);
tower(n-1,aux,beg,end);
}
//
}
void push(disc *tt,int x)
{
tt->val1[tt->top]=x;
tt->top++;
}

pop(disc *tt)
{
int a;
tt->top--;
a=tt->val1[tt->top];
tt->val1[tt->top]=0;
return a;
}

void draw_stack(disc *beg,disc *end,disc *aux)
{
int ypos=295,i,height=10,xpos;
int ver=0;
cleardevice();

setfillstyle(1,2);
bar(20,300,580,310);

bar(100,100,110,300);
bar(300,100,310,300);
bar(500,100,510,300);

rectangle(20,300,580,310);

rectangle(100,100,110,300);
rectangle(300,100,310,300);
rectangle(500,100,510,300);

/* END TOWER*/
ypos=295;
if(end->pos==1)
xpos=BegPos;
else if(end->pos==2)
xpos=AuxPos;
else if(end->pos==3)
xpos=EndPos;

for(i=0;i<end->top;i++)
{
setfillstyle(end->val1[i],end->val1[i]);

bar(xpos-(end->val1[i]*width),ypos,xpos+(end->val1[i]*width),ypos-height);

rectangle(xpos-(end->val1[i]*width),ypos,xpos+(end->val1[i]*width),ypos-height);
ypos-=(height+2);
}
ver=end->pos;

/* BEG TOWER*/
if(beg->pos==1)
xpos=BegPos;
else if(beg->pos==2)
xpos=AuxPos;
else if(beg->pos==3)
xpos=EndPos;

ypos=295;
for(i=0;i<beg->top;i++)
{
setfillstyle(beg->val1[i],beg->val1[i]);

bar(xpos-(beg->val1[i]*width),ypos,xpos+(beg->val1[i]*width),ypos-height);

rectangle(xpos-(beg->val1[i]*width),ypos,xpos+(beg->val1[i]*width),ypos-height);
ypos-=(height+2);
}

/* AUX TOWER*/
ver=ver*10+beg->pos;

if(ver<20)
{
if(ver%10==2)
xpos=EndPos;
else
xpos=AuxPos;
}
else if(ver<30)
{
if(ver%10==1)
xpos=EndPos;
else
xpos=BegPos;
}
else if(ver<40)
{
if(ver%10==1)
xpos=AuxPos;
else
xpos=BegPos;
}

ypos=295;
for(i=0;i<aux->top;i++)
{
setfillstyle(aux->val1[i],aux->val1[i]);

bar(xpos-(aux->val1[i]*width),ypos,xpos+(aux->val1[i]*width),ypos-height);

rectangle(xpos-(aux->val1[i]*width),ypos,xpos+(aux->val1[i]*width),ypos-height);
ypos-=(height+2);
}
getch();
}

Related Post:

  • Code C-C++: Các bài toán xử lý chuỗi (string) - (Phần 2)1. Viết chương trình đổi những kí tự đầu tiên của mỗi từ thành chữ in hoa.void chuhoadau(char *s){    s[0]=toupper(s[0]);while(strstr(s," ")!=NULL){    s=strstr(s," ")+1;    s[0]=toupper(s[0]);} }2. Viết chương trình đổi chữ xen kẻ 1 chữ hoa và 1 chữ thường.Ví dụ: nhập ABCDEfgh đổi thành AbCdEfGhvoid chuxenke… Read More
  • Code C-C++: Các bài toán xử lý chuỗi (string) - (Phần 1)1. Đếm có bao nhiêu khoảng trắng trong chuỗi (string)int demkhoangtrang(char *s){int d=0;while(strstr(s," ")!=NULL){   d++;   s=strstr(s," ")+1;}return d;}2. Nhập vào một chuỗi, hãy loại bỏ những khoảng trắng thừa trong chuỗi (string).void xoakhoangtrang(char *s){   char *c=strstr(s,"  ");… Read More
  • Các giải thuật sinh đường tròn trong C/C++1. Giải thuật sinh đường tròn Bresenham:void Bre_circle(int xc, int yc, int Radius, int color) {      int x, y, p;      x = 0;      y = Radius;      p = 3 - 2 * Radius; while (x <= y) {      putpixel(xc + x, yc + y, color);   &… Read More
  • Code C-C++: Tính giá trị của biểu thức: S = 2! + 4! + 6! + … + n! (với n nguyên, nhập vào từ bàn phím).Tính giá trị của biểu thức: S = 2! + 4! + 6! + … + n! (với n nguyên, nhập vào từ bàn phím).#include <iostream.h>#include <conio.h>#include <stdio.h>void main(){    int n;    cout<<"\n Nhap n="; cin>>n;    int gt=1,s=0;    for(int i=2; i<=n;i=i+2){ for (int j=1;j<=i;j++) gt=gt*j;     … Read More
  • Giải thuật sinh đường Ellipse #include <graphics.h>#include <conio.h>#define ROUND(a) ((long)(a+0.5))void plot(int xc, int yc, int x, int y, int color){      putpixel(xc+x, yc+y, color);      putpixel(xc-x, yc+y, color);      putpixel(xc+x, yc-y, color);      putpixel(xc-x, yc-y, color);}void Mid_ellipse(int xc, int yc, int a,… Read More
  • Code C-C++: Các bài toán sử dụng mảng 1 chiềuCác bài toán thao tác với mảng 1 chiều:- Nhập vào 1 dãy số nguyên có n số (1<=n<=100)- In ra màn hình các số lớn hơn 0- Tìm max- Tính tổng các số lớn hơn 10#include<iostream.h> #include<conio.h> void main(){         int a[100],n; // Nhap so phan tu n         do{  &nb… Read More

2 nhận xét

2/ CÁC SỰ KIỆN ĐẶC BIỆT:

- Những sự kiện như vậy giúp bạn vươn đến một lượng khách hàng vốn dĩ không quan tâm nhiều đến quảng cáo. Ngay cả những sự kiện đặc biệt không phải dành cho giới cao cấp vẫn là một công cụ quan trọng trong nổ lực hoạt động tiếp thị của bạn.

General Motors chup anh quang cao tổ chức những chương trình đặc biệt ngoài trời chỉ dành riêng cho những người sở hữu xe Saturn. Molson đầu tư 30% đến 40% ngân sách hàng năm dành cho các hoạt động truyền thông và tiếp thị váo việc tổ chức các sự kiện và tung ra sản phẩm mới.

Bài viết rất hay và có nhiều lợi ích, nếu bạn muốn tham khảo một số sản phẩm khác :
- may hut bui mini
Thanks !!!




Klik untuk melihat kode: :) =( :s :D :-D ^:D ^o^ 7:( :Q :p T_T @@, :-a :W *fck* x@