PersianTools Forums

Go Back   PersianTools Forums > برنامه نویسی و طراحی وب، سیستمهای مدیریت سایت > برنامه نویسی > خانواده C++ , C

Reply
 
امکانات بيشتر
Old 12-13-2006, 07:42 AM   #91
Arash_j13
Registered User
 
Arash_j13's Avatar
 

Join Date: Feb 2005
Location: مشهد
Posts: 777
Send a message via MSN to Arash_j13 Send a message via Yahoo to Arash_j13
Quote:
خيلي ممنونم
اگه ميشه برنامه هشت وزير رو طوري كه تمام 92 حالت ممكن رو برامون چاپ كنه رو بنويسيد
البته هم با تابع بازگشتي و هم بدون اون ...
البته بازم ميگم >>>>>> اگه سورسشو آماده داريد يا نوشتنش راحته ...
مرسي
باي عزيزم
برات می زارم کار سخیتی نیست به روش بازگشتی می شه


سهراب جان شما هم خوب می نویسی با یکم تمرین بهتر هم می شه
Arash_j13 is offline   Reply With Quote
Old 12-13-2006, 03:51 PM   #92
shahab_sh
Registered User
 
shahab_sh's Avatar
 

Join Date: May 2006
Posts: 86
دوباره سلام
یه سوال داشتم.
تو همون برنامه ای که نوشته بودم برای نگه داشتن حاصل عبارت از long int استفاده کرده بودم. حالا میخوام یک کلاس درست بکنم به نام var که بتونه اعداد تا مثلا 50 رقم رو هم نگه داره و با استفاده از تعریف مجدد عملگرها بتونم اونها رو باهم جمع و تفریق و ضرب و تقسیم بکنم. راستش هر چی فکر کردم راه درست حسابی به ذهنم نرسید. خیلی ممنون اگه یه راهنمایی بکنید.
__________________
www.best-circuits.com
این سایت شامل مدارهای الکترونیکی، مطالب و ebook های مربوط به الکترونیک و نرم افزارهای الکترونیک میباشد
shahab_sh is offline   Reply With Quote
Old 12-13-2006, 05:13 PM   #93
Arash_j13
Registered User
 
Arash_j13's Avatar
 

Join Date: Feb 2005
Location: مشهد
Posts: 777
Send a message via MSN to Arash_j13 Send a message via Yahoo to Arash_j13
کالاس جالبی همیشه دوست داشتم یه کلاس برای اینکار بنویسم
برای اینکار می تونید اعاد به صورت رقم به رقم در مبنای 10 نگه داری کنیدجمع و تفریق و ضرب و تقسیم رو انجام بدید برای اینکار می تونید از یه آرایه استفاده کنید که ارقام رو ذخیره کنه اگه خیلی نمی خواد پیچده بشه می تونید از یه ارایه ساده استفاده کنید ولی اگه می خوایید کلاستون بتونه تا هر رقمی رو نگه داری کنه باید از کلاس string یا vector استفاده کنید
Arash_j13 is offline   Reply With Quote
Old 12-14-2006, 11:07 AM   #94
rezakhafan4u
Registered User
 
rezakhafan4u's Avatar
 

Join Date: Nov 2006
Posts: 14
بابا بد قول ....

Quote:
نوشته ای از Arash_j13 View Post
برات می زارم کار سخیتی نیست به روش بازگشتی می شه


سهراب جان شما هم خوب می نویسی با یکم تمرین بهتر هم می شه
بابا مگه قرار نبود ديشب بزاري ؟!؟!؟!؟!
حيف شد ، مي خواستم امروز بدمش به استادمون
حالا بيخيال
سعي كن برام بزاري ، فوقش اطلاعات عموميم زياد ميشه ...
rezakhafan4u is offline   Reply With Quote
Old 12-14-2006, 03:35 PM   #95
shahab_sh
Registered User
 
shahab_sh's Avatar
 

Join Date: May 2006
Posts: 86
Quote:
نوشته ای از Arash_j13 View Post
کالاس جالبی همیشه دوست داشتم یه کلاس برای اینکار بنویسم
برای اینکار می تونید اعاد به صورت رقم به رقم در مبنای 10 نگه داری کنیدجمع و تفریق و ضرب و تقسیم رو انجام بدید برای اینکار می تونید از یه آرایه استفاده کنید که ارقام رو ذخیره کنه اگه خیلی نمی خواد پیچده بشه می تونید از یه ارایه ساده استفاده کنید ولی اگه می خوایید کلاستون بتونه تا هر رقمی رو نگه داری کنه باید از کلاس string یا vector استفاده کنید
منظورتون اینه که اعداد رو رقم به رقم توی یک string نگه دارم بعد دقیقا همونجوری که خودم عمل ضرب و تقسیم و... رو انجام میدم (رو کاغذ) برای کامپیوتر هم تعریف کنم؟
مثلا برای ضرب دوتا عدد 10 رقمی باید 10*10 بار عمل ضرب انجام بشه (رقم به رقم) و بعدا حداقل حداقل 10 بار هم عمل جمع. اگر عدد نقلی هم داشته باشیم که چندین بار دیگه هم عمل جمع باید تکرار بشه.
راستش اول یه همچین فکری (تو همین مایه ها) به ذهنم رسید ولی پیش خودم گفتم باید یک راه بهتر و سریعتر هم باشه. من برنامه نویسی اسمبلی برای میکروکنترلر(8051) رو هم کار کردم. برای اون یه همچین برنامه ای نوشتم. مثلا برای جمع، دوتا بایت اول رو باهم جمع میکنیم بعد دوتا بایت بعدی و بیت پرچم نقلی رو هم باهم جمع میکنیم. و این کار رو تا آخر ادامه میدیم. توی عمل تفریق هم همینطور ولی باز سر عمل ضرب و تقسیمش موندم!
حالا به نظر شما راه بهتری هست؟
با تشکر...شهاب.
shahab_sh is offline   Reply With Quote
Old 12-15-2006, 12:08 AM   #96
Arash_j13
Registered User
 
Arash_j13's Avatar
 

Join Date: Feb 2005
Location: مشهد
Posts: 777
Send a message via MSN to Arash_j13 Send a message via Yahoo to Arash_j13
راه بهتری هم هست البته پیدا سازیش سختره اینکه شما درست مثل کامپایلر عمل کنید می تونید عدد تون رو توی مثلا 16 بایت به صورت دو دویی ذخیره کنید که چهار تا چهار بایت یا هشت تا دو بایت هست بعد اعمال ریاضی رو به صورت کلمه به کلمه انجام بدید و نتایج کری ها رو هم در محاسبات دخیل کنید اگه اسمبلی برای ماشین های 8086 کار کرده باشید برای ضرب 32 بیت در 32 از این روش استفاده می شه
Arash_j13 is offline   Reply With Quote
Old 12-17-2006, 10:41 AM   #97
rezakhafan4u
Registered User
 
rezakhafan4u's Avatar
 

Join Date: Nov 2006
Posts: 14
آرش کجايي؟

آرش پس برنامه ما چي شد؟
تو که گفتي کاري نداره
بابا عجب بد قولي هستي هااااااااااااا
rezakhafan4u is offline   Reply With Quote
Old 12-18-2006, 08:56 AM   #98
Arash_j13
Registered User
 
Arash_j13's Avatar
 

Join Date: Feb 2005
Location: مشهد
Posts: 777
Send a message via MSN to Arash_j13 Send a message via Yahoo to Arash_j13
Code:
/**
    Autor: arash_j13
    Dec 17, 2006
**/

#include <iostream>
#include <cstdlib>
using namespace std;


#define N 8

bool put(int);
void print(bool=true);
bool check(int,int);

int board [N][N]={0};
int y=0;
int main()
{
	put(0);
	print(false);
	cout<<y<<endl;
	system("pause");
	return 0; 
}

bool put(int row)
{
	if (row==N)
	{
		print();
		y++;
		return false;
	}

	for(int col=0 ; col<N; ++col)
		if(check(row,col))
		{
			board[row][col]=1;
			if(put(row+1))
				return true;
			board[row][col]=0;
		}
	return false;
}

bool check(int row,int col)
{
	for(int i=0 ; i < N ; ++i)
		if(board[i][col])
			return false;

	for(int i=row-1,j=col-1; i > -1 && j > -1 ; --j , --i)
		if(board[i][j])
			return false;

	for(int i=row-1,j=col+1; i > -1 && j < N ; ++j , --i)
		if(board[i][j])
			return false;

	for(int i=row+1,j=col-1; i < N && j > -1 ; --j , ++i)
		if(board[i][j])
			return false;

	for(int i=row+1,j=col+1; i < N && j < N ; ++j , ++i)
		if(board[i][j])
			return false;

	return true;
}

void print(bool useBuffer)
{
	static int count=0;
	static int buffer [4][N][N];
	if(useBuffer)
	{
		for(int i=0 ; i < N ;++i)
			for(int j=0 ; j < N ;++j)
				buffer[count][i][j]=board[i][j];
	
		++count;
	}
	if(count==4||( !useBuffer && count>0))
	{
		cout<<endl<<endl;
		for(int i=0 ; i < N ; ++i,cout<<endl)
			for(int k=0 ; k < count ; ++k,cout<<"  ")
				for(int j=0 ; j < N ; ++j)
					cout<<buffer[k][i][j]<<" ";
		count=0;
	}
	
}
Arash_j13 is offline   Reply With Quote
Old 12-22-2006, 01:35 PM   #99
shahab_sh
Registered User
 
shahab_sh's Avatar
 

Join Date: May 2006
Posts: 86
آقا آرش دستتون درد نکنه.
حالا میشه خواهشا یه سوال دیگه مطرح کنید (خیلی سخت نباشه ها )
با تشکر،
شهاب

Last edited by shahab_sh; 12-22-2006 at 01:39 PM..
shahab_sh is offline   Reply With Quote
Old 12-22-2006, 07:13 PM   #100
Arash_j13
Registered User
 
Arash_j13's Avatar
 

Join Date: Feb 2005
Location: مشهد
Posts: 777
Send a message via MSN to Arash_j13 Send a message via Yahoo to Arash_j13
این سوال میان ترم برنامه سازی پیشرفته ما بوده

ما یه الگوریتم رمز نگاری داریم که با کمک یه ماتریس پنچ در پنچ عبارات رو رمز می کنه و برای رمز کردن از یه کلمه کلید استفاده می کنه روش کار به این صورت که مان این ماتریس رو به روشی که می گم با 25 حرف الفبا پر می کنیم و یه حرف باقی می مونه(فرض کنید کلمه و عبارتی که قرار است رمز شود اصلا شامل حروف بزرگ نیست و تمام حروف کوچک است) ما برای رمز کردن علاوه بر عبارت یه سری از اعداد رو می گیریم سپس اولین کاکتر عبارت رو درون جدول پیدا می کنیم اگر توی جدول وجود داشت به تعداد اولین عدد در ماتریس به سمت راست حرکت می کنیم و به تعداد دومین عدد به سمت بالا کاکتر به دست اومده رو جایگزین کارکتر اصلی می کنیم و می ریم سراغ کاکتر دوم و به اندازه سومین کارکتر به راست و به اندازه چهارمین کاکتر به بالا حرکت می کنیم و همین طور ادامه می دیم هر کاکتری که توی ماتریس نبود مثل فاصله یا اون حرف خاص که باقی مونده رو بدون تغییر در رشته اصلی باقی می گزاریم توجه کنید که موقع حرکت در ماتریس اگه از یه سمت بیرون بیفتیم از سمت دیگه اخل می شیم مثلا اگه حرف روی ستون 3 باشه و قراه 2 تا به سمت راست حرکت کنیم به ستون شماره 0 می رسم و در مورد ارایه اعداد هم همین طور مثلا اگه پنج تا عدد داریم بار اول عدد اول و دوم بار دوم عدد سوم و چهارم بار سوم عدد پنج و اول و به همین ترتیب
روش پر کردن ماتریس
کاکترهای با این ترتیب قرار می گیرن اول کلید و سپس حروف الفبا به ترتیب توجه کنید کاکتر تکراری توی ماتریس قرار نمی گیره و برای پر کردن اول ستون اصلی بعد ستون فرعی و بعد هم از اول به صورتی سطری از چپ به راست ماتریس رو پر می کنیم
مثلا اگه کلید کلمه mykey باشه جدول به این صورت پر می شه

m g h i b
j y l c n
o p k q r
s d t e u
f v w x a

و با اعداد زیر رشته arash_j13 اینطوری رمز می شه oqtwk_v13
1,2,-1,0,-2

Last edited by Arash_j13; 12-22-2006 at 07:55 PM..
Arash_j13 is offline   Reply With Quote
Old 12-25-2006, 07:51 PM   #101
Trusted Member
mohammad_110
کاربر فعال برنامه نویسی
 

Join Date: Jan 2006
Posts: 60
سلام

ببخشيد كه من خيلي دير سر مي زنم . الان ديگه ترم آخرم و هزار گرفتاري!!!

اين برنامه هشت وزير رو خيلي وقت پيش نوشته بودم. فرصت توضيح نوشتن ندارم شايد بعدا . فعلا خود برنامه رو گشتم پيدا كردم:

Code:
#include<stdio.h>
#include<conio.h>
void shat3(int x,int y,int nx,int ny,int tnx,int tny,int cse,int csi);
void main()
{
 int y[8]={0},i,j,k,l,s=0,x;
 char ch;
 textbackground(1);
 clrscr();
 textcolor(1);
 do
  {
   x=l=0;
   y[0]++;
   while(y[x]>7&&x!=7)
    {
     y[x]=0;
     x++;
     y[x]++;
    }
   for(i=0;i<7;i++)
    {
     for(j=i+1;j<8;j++)
      if(y[i]==y[j] || y[i]+i-j==y[j] || y[i]-i+j==y[j])
       {
	l=1;
	break;
       }    
     if(l==1)break;
    }

   if(l==0)
    {
     s++;     
     shat3(10,1,8,3,8,8,0,7);
     for(k=0;k<8;k++)
      {
       gotoxy(13+8*y[k],(k+1)*3-1);
       if((y[k]+k)%2==0)
	textattr(4);
       else
	textattr(7<<4^4);
       cprintf("XX");
      }
    if(y[7]%2==0)
     textcolor(7);
    else
     textcolor(0);

     ch=getch();
     if(ch=='q')break;
    }
  }while(y[7]<8);
 textbackground(1);
 clrscr();
 textcolor(2);
 gotoxy(35,13);
 cprintf("%d",s);
 getch();
}
void shat3(int x,int y,int nx,int ny,int tnx,int tny,int cse,int csi)
{
 int i,j,k,l,m=0;
 gotoxy(x,y);
 for(i=0;i<tny;i++)
  for(j=0;j<ny;j++)
   {
    m++;
    for(k=0;k<tnx;k++)
     {
      if((i+k)%2==0)
       textbackground(cse);
      else
       textbackground(csi);
      for(l=0;l<nx;l++)
       cprintf(" ");
     }
    gotoxy(x,y+m);
   }
}
از حجمش نترسيد همش كاراي گرافيكي. فقط قسمت هاي قرمز مر بوط به الگوريتم ميشه.
متغيير s تعداد حالت هاي صحيحي كه پيدا شده است را مي شمارد.

هر بار كه يك حالت رو پيدا مي كنه اون رو نمايش مي دهد و يك دكمه مي گيرد (قسمت آبي) كه اگر بخواهيد سريع تر اجرا شود مي تونيد اين خطهاي آبي رو حذف كنيد.
__________________

Last edited by mohammad_110; 12-25-2006 at 08:01 PM..
mohammad_110 is offline   Reply With Quote
Old 12-26-2006, 04:40 AM   #102
Trusted Member
raxtastar
کاربر فعال ورزش
 
raxtastar's Avatar
 

Join Date: Jun 2005
Posts: 1,450
تاپیک خوابید!!!

Last edited by raxtastar; 01-15-2007 at 02:40 AM..
raxtastar is offline   Reply With Quote
Old 01-23-2007, 05:13 PM   #103
shahab_sh
Registered User
 
shahab_sh's Avatar
 

Join Date: May 2006
Posts: 86
متاسفانه مثل اینکه همینطوره تاپیک خوابش برده
shahab_sh is offline   Reply With Quote
Old 01-23-2007, 07:08 PM   #104
Arash_j13
Registered User
 
Arash_j13's Avatar
 

Join Date: Feb 2005
Location: مشهد
Posts: 777
Send a message via MSN to Arash_j13 Send a message via Yahoo to Arash_j13
سوال هر چقدر بخواید می زارم کسی باشه جواب بده سوال بزارید هم جواب می دم ولی اینجا من تنها باید برای خودم تمرین بزارم بعد هم خودم حل کنم اونو که دیگه تو فروم نمی زارن

حالا برای اینکه بدون مسئله نباشید مسئله کلاسیک Maze رو حل کنید یه هزار تو داریم که یه خروجی و ورودی داره یه موش قراره از ورودی این هزارتو که گوشه بالا سمت چپ هست وارد بشه و از خروجی که پایین سمت راست هست خارج بشه برنامه بنویسید که مسیر حرکت موش برای رسید به خورجی رو پیدا کنه
Arash_j13 is offline   Reply With Quote
Old 02-06-2007, 04:49 PM   #105
sha19425
Registered User
 
sha19425's Avatar
 

Join Date: Jan 2006
Posts: 180
اگه کسی یه پروژه باحال و کاربردی بلده با سی بگه :
یه پروژه ابتکاری و پولساز که سی رو خوب یاد بگیریم.
sha19425 is offline   Reply With Quote
Reply

امکانات بيشتر

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +4.5. The time now is 10:19 AM.

PersianTools RSS Feeds


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.