PDA

View Full Version : تعداد تكرارهاي ورود به هر خانه



بهارجون
دوشنبه 10 فروردین 1388, 01:42 صبح
سلام مي خواستم يكي در نوشتن اين برنامه كمكم كنه
ممنون:عصبانی++:
يك سوسك در چهار گوشه و در موزاييك وسط كف يك اتاق مستطيلي به اندازه m*n موزاييك قرار دارد . اين سوسك به صورت تصادفي از يك خانه به خانه ي ديگر سرگردان است. فرض كنيد كه اين سوسك بتواند از خانه فعلي خود به هر 8 خانه مجاور با احتمال مساوي حركت كند . سوسك نمي تواند خارج از 4 گوشه حركت كند.
برنامه اي بنويسيد كه تعداد تكرارهاي ورود به هر خانه را نشان دهد.نقطه شروع توسط كاربر وارد مي شود.
ممنون

nimvb123456
دوشنبه 10 فروردین 1388, 15:36 عصر
سلام
تو کد پاببن میتونی با عوض کردن row و col عرض و طول مستطیل رو مشخص کنی.
موفق باشید.

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <iomanip.h>
//************************************************** ****************************
enum MoveState{Forward,Backward,Top,Bottom,SouthWest,So uthEast,NorthWest,NorthEast};
MoveState State;
const int row=3;//Declare Row Of The Rectangle
const int col=4;//Declare Col Of The Rectangle
int Board[row][col]={0};//Decalre Array
int CurrentRow=row/2;//Set The Spider Row
int CurrentCol=col/2;//Set The Spider Col
//************************************************** ****************************
void Move();//Move The Spider In The Board;
void ChooseState(int);//Show The Spider State In The Board
void ShowBoard();//Show The Rectangle
int main()
{
srand(time(0));
Move();
ShowBoard();
getch();
return 0;
}
//================================================== ============================
void Move()
{
int RndNumber,i;
for(i=0;i<=23000;i++)
{
RndNumber=(rand()%10)+1;
ChooseState(RndNumber);
if(State==Forward)
{
if( (CurrentCol+1<col && CurrentCol+1>=0) && (CurrentRow<row && CurrentRow>=0) )
{
CurrentCol=CurrentCol+1;
Board[CurrentRow][CurrentCol]=Board[CurrentRow][CurrentCol]+1;
}
}
else if(State==Backward)
{
if( (CurrentCol-1<col && CurrentCol-1>=0) && (CurrentRow<row && CurrentRow>=0) )
{
CurrentCol=CurrentCol-1;
Board[CurrentRow][CurrentCol]=Board[CurrentRow][CurrentCol]+1;
}
}
else if(State==Top)
{
if( CurrentRow-1<row && CurrentRow-1>=0 )
{
CurrentRow=CurrentRow-1;
Board[CurrentRow][CurrentCol]=Board[CurrentRow][CurrentCol]+1;
}
}
else if(State==Bottom)
{
if( CurrentRow+1<row && CurrentRow+1>=0 )
{
CurrentRow=CurrentRow+1;
Board[CurrentRow][CurrentCol]=Board[CurrentRow][CurrentCol]+1;
}
}
else if(State==SouthWest)
{
if( CurrentRow+1<row && CurrentCol-1>=0 )
{
CurrentRow=CurrentRow+1;
CurrentCol=CurrentCol-1;
Board[CurrentRow][CurrentCol]=Board[CurrentRow][CurrentCol]+1;
}
}
else if(State==SouthEast)
{
if( CurrentRow+1<row && CurrentCol+1<col )
{
CurrentRow=CurrentRow+1;
CurrentCol=CurrentCol+1;
Board[CurrentRow][CurrentCol]=Board[CurrentRow][CurrentCol]+1;
}
}
else if(State==NorthWest)
{
if( CurrentRow-1>=0 && CurrentCol-1>=0 )
{
CurrentRow=CurrentRow-1;
CurrentCol=CurrentCol-1;
Board[CurrentRow][CurrentCol]=Board[CurrentRow][CurrentCol]+1;
}
}
else if(State==NorthEast)
{
if( CurrentRow-1>=0 && CurrentCol+1<col )
{
CurrentRow=CurrentRow-1;
CurrentCol=CurrentCol+1;
Board[CurrentRow][CurrentCol]=Board[CurrentRow][CurrentCol]+1;
}
}
}
}
//================================================== ============================
void ChooseState(int Rnd)
{
if(Rnd>=1 && Rnd<=2)
{
State=Forward;
}
else if(Rnd>3 && Rnd<=4)
{
State= Backward;
}
else if(Rnd>4 && Rnd<=5)
{
State=Top;
}
else if(Rnd>5 && Rnd<=6)
{
State=Bottom;
}
else if(Rnd>6 && Rnd<=7)
{
State=SouthWest;
}
else if(Rnd>7 && Rnd<=8)
{
State=SouthEast;
}
else if(Rnd>8 && Rnd<=9)
{
State=NorthWest;
}
else if(Rnd>9 && Rnd<=10)
{
State=NorthEast;
}
}
//================================================== ============================
void ShowBoard()
{
int i,j;
cout<<"\n===========================================\n";
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
cout<<setw(6)<<Board[i][j]<<" ";
}
cout<<"\n\n";
}
}

بهارجون
سه شنبه 11 فروردین 1388, 01:10 صبح
ممنون خيلي كمك كرديد اميدوارم جبران كنم

nimvb123456
سه شنبه 11 فروردین 1388, 01:45 صبح
خواهش میکنم
اگه بازم مشکلی داشتید تا حدی که بلدم بگید اگه تونستم کمکتون میکنم.

معماریان
دوشنبه 12 بهمن 1388, 23:31 عصر
سلام
فوری تو++ visual studio c چه جوری میشه سایز ارایه رو از کاربر گرفت ؟eror میده !

clover
دوشنبه 12 بهمن 1388, 23:42 عصر
واقعا آدم لذت می بره از فعالیت در چنین تالاری !

سلام
فوری تو++ visual studio c چه جوری میشه سایز ارایه رو از کاربر گرفت ؟eror میده !
دوست عزیز
در این تاپیک یک تمرین دانشجویی درخواست شده که خلاف قوانین انجمن هست، بعد شما به جای اینکه در مورد مطلب مورد نظر درسایت جستجو کنید و بعد اگر پیدا نکردید مطلبتون را در یک تاپیک جدید مطرح کنید، آمدید و در ادامه این تاپیک سوال پرسیدید.
اینجا یک جامعه مجازی هست و مثل همه ی جوامع برای خودش قوانینی داره.
لطفا ابتدا قوانین فروم را مطالعه کنید.

samin_sde
جمعه 15 آذر 1392, 08:19 صبح
سلام دوستان، میشه لطفا اون قسمتی که نوشته"
const int row=3;//Declare Row Of The Rectangle
const int col=4;//Declare Col Of The Rectangle
"
را توضیح بدید؟ چرا row را 3 و col را 4 قرار دادین؟