X
تبلیغات
نماشا
رایتل

قرآن در کامپیوتر

دانلود نرم افزار های قرآنی یه صورت رایگان

سورس برنامه حرکت اسب به زبان C

برنامه ای بنویسید که حرکت اسب را شبیه سازی کند ، به طوری که یک اسب از یک خانه از صفحه شطرنج شروع به حرکت کرده و تمام خانه ها را طی کند به شرط اینکه به هر خانه فقط یک بار برود.
محل شروع اسب را از کاربر می پرسد.
مثال : در شکل ادامه مطلب محل شروع حرکت خانه (1،1) در نظر گرفته شده است . حرکت بعدی اسب خانه (2،3) است که با عدد 2 شماره گذاری شده است . و عدد 3 برای حرکت سوم می باشد
صفحه شطرنج 8*8 است پس باید اسب 64 حرکت داشته باشد.

در برنامه زیر وقتی محل شروع را خانه های بالایی صفحه شطرنج انتخاب می کنیم سرعت برنامه نسبتا خوب است اما وقتی که خانه های پایینی صفحه را انتخاب می کنیم سرعت برنامه خیلی کُند می شد به طوری وقتی خانه 8 و 8 را محل شروع اسب انتخاب کنیم حل برنامه چند دقیقه طول می کشد.
لطفا شما نیز روی این برنامه کمی فکر کنید
اگر توانستید با الگریتم بهتری این مسئله را حل کنید در وبلاگ قرار دهید و یا مشکل برنامه زیر را حل کنید و ببینید که چه چیزی سرعت برنامه را کم می کند.


#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
int a[9][9];
void run(int,int,int);
void end(void);
main()
{
 int x,y,i=1;
 for(int j=1;j<=8;j++)
  for(int k=1;k<=8;k++)
   a[j][k]=0;
 clrscr();
 printf("*** program move hours ***\n\n");
 printf("\n Enter X : ");
 scanf("%d",&x);
 printf("\n Enter Y : ");
 scanf("%d",&y);
 if(x<1 || x>8 || y<1 || y>8)
 {
  printf("\nError : number between 1 and 8");
  getch();
  exit(1);
 }
 a[x][y]=i;
 i++;
 run(x-2,y-1,i);
 run(x-2,y+1,i);
 run(x-1,y-2,i);
 run(x+1,y-2,i);
 run(x-1,y+2,i);
 run(x+1,y+2,i);
 run(x+2,y-1,i);
 run(x+2,y+1,i);
 printf("\n Error : I can not end program");
 getch();
 end();
}
void run(int x,int y,int i)
{
 if(x<1 || x>8 || y<1 || y>8)
  return;
 if(a[x][y]!=0)
  return;
 a[x][y]=i;
 i++;
 if(i==65)
  end();
 run(x-2,y-1,i);
 run(x-2,y+1,i);
 run(x-1,y-2,i);
 run(x+1,y-2,i);
 run(x-1,y+2,i);
 run(x+1,y+2,i);
 run(x+2,y-1,i);
 run(x+2,y+1,i);
 a[x][y]=0;
}
void end(void)
{
 clrscr();
 for(int j=1;j<=8;j++)
 {
  for(int k=1;k<=8;k++)
   printf("%d\t",a[j][k]);
  printf("\n\n\n\n\n\n");
 }
 getch();
 exit(0);
}

نویسنده برنامه : مهندس

تاریخ ارسال: پنج‌شنبه 15 بهمن‌ماه سال 1388 ساعت 01:59 ب.ظ | نویسنده: مهندس | چاپ مطلب 4 نظر