• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

تمرین هایی برای سی++

Arash_j13

Registered User
تاریخ عضویت
18 فوریه 2005
نوشته‌ها
778
لایک‌ها
2
محل سکونت
مشهد
برای چی بازی خیلی جاها می شه که حتی لازمه از متغییر های long long int استفاده کنیم حتی با کمک برنامه نویسی 64 بیتی ما می تونیم اعداد صحیح با تعداد رقم ها بسیار زیادی رو داشته باشیم من همیشه سعی کردم اینکه نکته رو جا بندازم که دورانی که ما int رو دو بایت در نظر می گرفتیم به سر اومده الان باید 4 بایتی در نظر بگیریم حتی به نظرم اگه بگیم 8 بایت هم بهتر از دو هست چون سیستم های 16 بیتی دیگه پیدا نیم شه ولی تا دلتون بخواد سیستم ها ی 64 بیتی هست
 

AliMH

Registered User
تاریخ عضویت
25 ژانویه 2004
نوشته‌ها
770
لایک‌ها
1
آرش جان، دوران هيچي به سر نيومده، همه نوع متغير لازم هست، چرا كه شما هر چقدر متغير بزرگتري رو استفاده كنيد، هم حافظه بيشتري رو از دست ميديد و هم سرعت برنامه تون مياد پايين، در خيلي جاها حتي لازم هست شما از AL,AH,... استفاده كنيد.
منظور من 64 بيتي نبود، منظور من متغير هاي جديدي هست كه كمتر استفاده ميشه(MMX, SSE, SSE2,SSE3, 3dNow) اينها هر كدوم مجموعه متغيرهاي جديدي دارند(براي توضيح بيشتر به داكيومنت هاي پردازندها پنتيوم 4 مراجعه شود) و مجموعه دستورات خاص خودشونو به همراه دارند.
اميدوارم كه دوستان رو به اين بحث علاقه مند كرده باشم. از اينكه مزاحم بخش شدم عذرخواهي مي كنم(با اونكه به خودم قول دادم كه در هيچگونه فروم برنامه نويسي ايراني ديگه پستي نزنم نتونستم اينو نگم)
 

Arash_j13

Registered User
تاریخ عضویت
18 فوریه 2005
نوشته‌ها
778
لایک‌ها
2
محل سکونت
مشهد
نگفتم دوران متغیر های دو بایتی یا یه بایتی سر اومده گفتم دوارنی که Int رو دو بایت می گرفتیم تموم شده دیگه طول کلمه ی سی پی یو ها (int) دو بایت نیست
اگه دوست داشتید که فکر می کنم ندارید می تونیم تو یه تاپیک دیگه در مورد مورد صحبت کنیم
 

AliMH

Registered User
تاریخ عضویت
25 ژانویه 2004
نوشته‌ها
770
لایک‌ها
1
نگفتم دوران متغیر های دو بایتی یا یه بایتی سر اومده گفتم دوارنی که Int رو دو بایت می گرفتیم تموم شده دیگه طول کلمه ی سی پی یو ها (int) دو بایت نیست
اگه دوست داشتید که فکر می کنم ندارید می تونیم تو یه تاپیک دیگه در مورد مورد صحبت کنیم

اصلا علاقه اي به بحث(كل كل) سر اين موارد ندارم، چرا كه چيزي كه مفهوم هست نيازي به بحث نداره، كلا متغيرهاي معمول پردازنده ها از نوع صحيح هستند و متغيرهاي floating Point براي موارد ديگه(اعشاري) بكار گرفته ميشه.
براي اطلاعات بيشتر درباره معماري پردازنده هاي 64 بيتي به مباحث AMD64, EMT64و IA64 مراجعه كنيد(البته اينها همه بر حسب استاندارد IBM/PCهستند و اگر براي كامپايلر GCC مي خوايد بايد يه كم تغيير بديد و AT&T Syntax استفاده كنيد ولي اگه براي پلت فرم هاي ديگه مي خوايد[ALPHA, REC,ARM,SPARC] مي تونم براتون ارسال كنم يه كم گير اوردنشون دردسر داره)
دوست عزيز من اصلا هدفي براي ناراحت كردن كسي ندارم، اگه علاقه داريد به اين مباحث كتابهاي خيلي خوبي هست كه مي تونم معرفي كنم، در غير اينصورت عذرخواهي مي كنم و ديگه اينجا پستي نمي زنم.

موفق و پيروز باشيد.
 

Arash_j13

Registered User
تاریخ عضویت
18 فوریه 2005
نوشته‌ها
778
لایک‌ها
2
محل سکونت
مشهد
ممنون به اندازه کافی کتاب های معماری کامپیوتر و ریز پردازنده خوندم من ناراحت نشدم شما از همون اول با دید منفی صحبت کردید من همیشه اینجا بودم تا اگه کمکی از دستم بر می یاد انجام بدم نه اینکه کل کل کنم
 

sha19425

Registered User
تاریخ عضویت
10 ژانویه 2006
نوشته‌ها
281
لایک‌ها
21
کد یه بازی مار و پله بسیار ساده :

کد:
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<stdlib.h>
#include<math.h>
#include<dos.h>

void hadese(int );
void partab(int ,int );
void nobat(int );
void board();
void pelle();
void mar();
void start();
void rasm(int,int[]);
void redraw();
void welcome();

int p1[2],p[2];
int pos[2];
int passport[2]={0,0};
//************************************************************************

main(){
clrscr();
int  driver , mode ;
driver = DETECT ;
mode = 0 ;
initgraph( &driver , &mode , "c:\\tc\\bgi");

randomize();
//************************************************************************

board();
pelle();
mar();
welcome();
redraw();
start();


//**********************************************************************
return 0;

}//main()
			       void  board(){

	int size = 10;
	for(int k=0 ; k<= size ;k++) {
	line(120 , 40+k*(400/(size)) , 120+size*(400/size) , 40+k*(400/size));
	line(120 , 41+k*(400/(size)) , 120+size*(400/size) , 41+k*(400/size));
				     }//for
	for( k=0 ; k<=size ; k++) {
	line(120+k*(400/size),40,120+k*(400/size),40+size*(400/size));
	line(121+k*(400/size),40,121+k*(400/size),40+size*(400/size));
				   }//for


setcolor(3);
char string[4];
settextstyle(0,0,1);
outtextxy(122,405,"start");
for(int i=0 ; i<= 9 ;i++){
for(int j=0 ; j<= 9 ;j++){
if (j%2 == 1)itoa(abs(10-i)+j*10,string, 10);
else itoa(i+1+j*10,string, 10);
//outtextxy(125 + i*40 , 405-j*40 , string);
			 }//for
			 }//for

					      }//board()
			void pelle(){
int x[2],y[2] ;
int temp;
int count = 1 ;
while ( count <= 7){
if(count == 1)x[0] = 340 , y[0] = 420 , x[1] = 380 , y[1] = 300;
if(count == 2)x[0] = 180 , y[0] = 340 , x[1] = 180 , y[1] = 220;
if(count == 3)x[0] = 340 , y[0] = 300 , x[1] = 260 , y[1] = 180;
if(count == 4)x[0] = 460 , y[0] = 420 , x[1] = 500 , y[1] = 380;
if(count == 5)x[0] = 180 , y[0] = 100 , x[1] = 220 , y[1] = 60;
if(count == 6)x[0] = 420 , y[0] = 180 , x[1] = 420 , y[1] = 100;
if(count == 7)x[0] = 260 , y[0] = 140 , x[1] = 260 , y[1] = 100;

setcolor(6);

line(x[0],y[0],x[1],y[1]);
line(x[0]+10,y[0],x[1]+10,y[1]);
line(x[0]+1,y[0],x[1]+1,y[1]); 		 //for bold
line(x[0]+11,y[0],x[1]+11,y[1]);         //for bold

float temp1 ;
if(x[1]-x[0] == 0 ) temp1 = 1000000 ;// baraye binahayat
else temp1=fabs(float(y[1]-y[0])/float(x[1]-x[0]));
int i;
     if (y[0]<=y[1] && x[0]<=x[1]){for(i=1 ; i<=abs(y[1]-y[0])/10-1 ; i++){line( x[1]-int(i*10./temp1) , y[1]-10*i , x[1]+10-int(i*10./temp1) , y[1]-10*i);line( x[1]-int(i*10./temp1) , y[1]-10*i+1 , x[1]+10-int(i*10./temp1) , y[1]-10*i+1);}}//if
else if (y[0]<=y[1] && x[0]> x[1]){for(i=1 ; i<=abs(y[1]-y[0])/10-1 ; i++){line( x[1]+int(i*10./temp1) , y[1]-10*i , x[1]+10+int(i*10./temp1) , y[1]-10*i);line( x[1]+int(i*10./temp1) , y[1]-10*i+1 , x[1]+10+int(i*10./temp1) , y[1]-10*i+1);}}//if
else if (y[0]> y[1] && x[0]<=x[1]){for(i=1 ; i<=abs(y[1]-y[0])/10-1 ; i++){line( x[0]+int(i*10./temp1) , y[0]-10*i , x[0]+10+int(i*10./temp1) , y[0]-10*i);line( x[0]+int(i*10./temp1) , y[0]-10*i+1 , x[0]+10+int(i*10./temp1) , y[0]-10*i+1);}}//if
else if (y[0]> y[1] && x[0]> x[1]){for(i=1 ; i<=abs(y[1]-y[0])/10-1 ; i++){line( x[0]-int(i*10./temp1) , y[0]-10*i , x[0]+10-int(i*10./temp1) , y[0]-10*i);line( x[0]-int(i*10./temp1) , y[0]-10*i+1 , x[0]+10-int(i*10./temp1) , y[0]-10*i+1);}}//if

count++;
		}//while()


				     }//pelle()

			void mar(){
int zaribx0[8]={0,1,9,6,4,0,8,0},zaribx1[8]={0,2,8,5,2,1,7,0},zariby0[8]={0,1,6,8,1,7,9,6},zariby1[8]={0,0,4,5,7,9,0,1};

int x[2],y[2];
int count = 1;
while(count <= 7){

for(int i=1;i<=7;i++)
if(count == i)x[0]=140+40*zaribx0[i],y[0]=420-40*zariby0[i],x[1]=140+40*zaribx1[i],y[1]=420-40*zariby1[i];
count++;

setcolor(3);
line ( x[0]   ,y[0] , x[1]   ,y[1]);
setcolor(8);
line ( x[0]+1 ,y[0] , x[1]+1 ,y[1]);
line ( x[0]+2 ,y[0] , x[1]+2 ,y[1]);
line ( x[0]+3 ,y[0] , x[1]+3 ,y[1]);
setcolor(3);
line ( x[0]+4 ,y[0] , x[1]+4 ,y[1]);

			 }//while()
					 }//mar()


			       void start(){

	       //sleep(3);

	       int n=0;
	       pos[0]=pos[1] = -1 ;

	       p[0] = 125 , p1[0] =428;
	       p[1] = 125 , p1[1]=405;
	       rasm(n,pos);

	       int random1;
		char ch=' ';
		 //randomize();


	       while(1){

	      if(passport[n] == 0){

	      nobat(n);

		  if(n==0) ch=getch();
		  if(n==1) ch=50; //for computer

	      while(ch>57 || ch<48){
		    ch=getch();
				   }

	      if(n==0) random1 = (ch+random(100))%6+1;
	      else     random1 = random(100)%6+1;
		//sleep(1);
	      partab(n,random1);

	      if(random1 == 6){
				    //printf("congrulation");
				    pos[n]=1;
				    if(n==0){p[n]=125,p1[n]=428;}
				    if(n==1){p[n]=125,p1[n]=405;}
				    redraw();
				    rasm(n,pos);
				    passport[n] = 1;

				}//if
				     n=(n+1)%2;
					}//if

	       else {
nobat(n);

if(n==0) ch=getch();
if(n==1) ch=50; //for computer
while(ch>57 || ch<48){
       ch = getch();
		     }
		       if(n==0){ random1 = (ch+random(100))%6+1;p[n]=125,p1[n]=428;}
	       else    { random1 = random(100)%6+1;p[n]=125,p1[n]=405;}

	       partab(n,random1);

	       if(pos[n]+random1 >100) goto l1;

	      // printf("ran = %d" ,random1);
		pos[n] = pos[n]+random1;
		redraw();
		rasm(n,pos);
		if(pos[n]==100) { if(n==0){printf("You Win");getch();exit(0);}
				   else   {printf("Computer Wins"); getch();exit(0);}//else
				}//if

	     if(n==6 ||n==9 ||n==22||n==35||n==68||n==77||n==82||n==19||n==61||n==99||n==78||n==87||n==92||n==70){

		hadese(n);

		if(pos[n] == 6)pos[n]=34;
		if(pos[n] == 9)pos[n]=11;
		if(pos[n] == 22)pos[n]=59;
		if(pos[n] == 35)pos[n]=64;
		if(pos[n] == 68)pos[n]=88;
		if(pos[n] == 77)pos[n]=84;
		if(pos[n] == 82)pos[n]=98;
		//************************
		if(pos[n] == 19)pos[n]=3;
		if(pos[n] == 61)pos[n]=20;
		if(pos[n] == 99)pos[n]=80;
		if(pos[n] == 78)pos[n]=16;
		if(pos[n] == 87)pos[n]=55;
		if(pos[n] == 92)pos[n]=8;
		if(pos[n] == 70)pos[n]=49;


		redraw();
		rasm(n,pos);
							  }//if

		l1: if(random1 == 6 ) continue;

		n = (n+1)%2;

			}//else

			}//while()
					}//start



			void rasm(int n,int pos[]){

		    for(int i=1;i<=2;i++){
		    n = (n+1)%2;
		    if(n==0)setcolor(1);
		    else    setcolor(14);
		    int h,y;
		    h = (pos[n]-1)/10;
		    if(h%2 == 0) y = (pos[n]-1)%10;
		    else y = abs(10 - pos[n]%10)%10;
		    int x0,y0;
		    x0 = p[n]+y*40  ; y0 = p1[n]-40*h;
		    //setcolor(2);
		    for(int i=1;i<=8;i++)
		    line(x0,y0+i,x0+8,y0+i);
		    // printf("pos[%d]= %d",n,pos[n]);

					  }//for
		    getch();
						   }//rasm()


		 void redraw(){
		    //clrscr();
		    setcolor(0);
		    for(int i=0;i<=480;i++)
		    line(0,0+i,640,0+i);
		    //rectangle(0,0,640,480);
		    setfillstyle(0,0);
		    floodfill(50,50,0);
		    setcolor(15);

		    board();
		    pelle();
		    mar();
			       }//redraw()

			 void nobat(int n){
			    setcolor(0);
			  for(int i=1;i<=120;i++)
			  line(200,180+i,440,180+i);
			   setcolor(9);

				if(n==0){outtextxy(220,210,"It's time for you");
					 outtextxy(220,220,"press key(0-9)");}
				//if(n==1);//outtextxy(220,210,"nobat computer");

			 if(passport[n]== 0){
				if(n==0){outtextxy(220,230,"you must take 6 ");
					 outtextxy(220,240,"for enter the game");}
			       //if(n==1)outtextxy(220,230,"nobat computer");
					    }//if
			  // if(passport[n]== 1){
				//if(n==0)outtextxy(220,250,"throw tas ");
				//if(n==1)outtextxy(220,250,"");
			   //		    }//if
			   setcolor(15);
			  rectangle(205,185,435,295);
			  rectangle(202,182,438,298);
			     // getch();
				     }//nobat()

			 void welcome(){
			    setcolor(0);
			  for(int i=1;i<=120;i++)
			  line(200,180+i,440,180+i);
			   setcolor(9);
			  outtextxy(220,240,"  welcome to the game");
			   setcolor(15);
			  rectangle(205,185,435,295);
			  rectangle(202,182,438,298);
			      getch();
					  }//welcome()

		     void partab(int n , int random1 ){
			  setcolor(0);
			  for(int i=1;i<=120;i++)
			  line(200,180+i,440,180+i);
			   setcolor(4);
			   char string[2];
			   itoa(random1,string,10);

		       if(n==0){outtextxy(238,225,"you take");outtextxy(250,240,string);}
		       if(n==1){outtextxy(238,225,"computer takes");outtextxy(250,240,string);}
				 setcolor(15);
			  rectangle(205,185,435,295);
			  rectangle(202,182,438,298);
			getch();
						       }//partab()

			void hadese(int n){
			      setcolor(12);

			     setcolor(0);
			  for(int i=1;i<=120;i++)
			  line(200,180+i,440,180+i);
			     setcolor(15);
			  rectangle(205,185,435,295);
			  rectangle(202,182,438,298);
			  if(pos[n]==6 || pos[n]==9 ||pos[n]== 22 || pos[n]==68 || pos[n]==77 ||pos[n]== 82 ||pos[n]==35)
			     {outtextxy(248,225,"ladder");}
			 else if(pos[n]==87 || pos[n]==78 ||pos[n]== 99 || pos[n]==61 || pos[n]==19 ||pos[n]== 70 || pos[n]==92)
			     {outtextxy(248,225,"snake");}
			 else return;

				getch();
					   }//hadese()

البته خیلی قاطی پاتیه و پر از کدهای تکراری!
 

g.mehr

کاربر تازه وارد
تاریخ عضویت
8 اکتبر 2007
نوشته‌ها
14
لایک‌ها
0
سلام کسی برنامه Quick Sort رو داره؟
البته بدون استفاده از تابع بازگشتی.
میشه اگه دارید برام پی ام بذارید؟؟؟؟؟
ممنون میشم.
 

razps5

Registered User
تاریخ عضویت
28 آپریل 2007
نوشته‌ها
141
لایک‌ها
7
سلام دوستان
کسی فایل install برنامه ++C رو نداره همون که شبیه برنامه C هست و هایلات میشه
از هرجا میگیرم خراب در میاد:(
Include# ش ارور میده
اگه جای بدی مطرح کردم ببخشید
 

saeb

کاربر تازه وارد
تاریخ عضویت
29 جولای 2003
نوشته‌ها
41
لایک‌ها
0
محل سکونت
Iran,Tehran
سلام دوستان
کسی فایل install برنامه ++C رو نداره همون که شبیه برنامه C هست و هایلات میشه
از هرجا میگیرم خراب در میاد:(
Include# ش ارور میده
اگه جای بدی مطرح کردم ببخشید
توی منوی
options
زیر منوی
directories
چک کن که آیا آدرس ها درست است یا نه؟
 

saeb

کاربر تازه وارد
تاریخ عضویت
29 جولای 2003
نوشته‌ها
41
لایک‌ها
0
محل سکونت
Iran,Tehran
اقا ارش سلام
این برنامه به ذهنم رسیده ولی نمیدونم مشکلش چیه که به گرفتن حروف خاتمه نمی ده و تو خروجی چاپ نمی کنه؟:(
کد:
#include <iostream>
#include <conio.h>
#include <vector>
using namespace std;

void get();
int main()
{
    get();
    getch();
    return 0;
}
void get()
{
    char ch;
    ch=getch();
    if(ch!='q'||ch!='Q')               
       get();
    else
    {
       cout<<ch;   
       return;
       }
       
}

join us
4pk329y.jpg

اول اینکه در تعریف اینکلود ها باید نقطه اچ به کار ببری
در شرط نیز باید پرانتز گذاری کنی
using namespace std;
را نیز لازم نیست اگر تحت داس می نویسی
بعد باید به جای شرط از while ‌استفاده کنی
 

Arash_j13

Registered User
تاریخ عضویت
18 فوریه 2005
نوشته‌ها
778
لایک‌ها
2
محل سکونت
مشهد
فکر کنم یکم دنیا پیشرفت کرده شما نمی خواید کامپایل های دهه هشتاد رو کنار بزارید این توضیحاتی که دادید مال عهد توربو سی هست تو استاندارد جدید نیاز به دات اچ نیست و استفاده از فضاهای نامی اجباریه در ضمن تابع بازگشتی برای همین حلقه نمی خواد ریکرژن به جای ایترشن
 

masterpiece

کاربر تازه وارد
تاریخ عضویت
1 دسامبر 2007
نوشته‌ها
5
لایک‌ها
0
سلام
اگه کسی میتونه این تمرینات را یرای من جواب بده.متشکرم:
1.برنامه ای که حداکثر 10 عدد صحیح را دریافت کند و سپس توسط تابعی دیگر درایه های منفی را قرینه کند.
2. برنامه ای که یک ماتریس 3*2 ویک ماتریس 4*3 را توسط تابعی دریافت کند و حاصل را در تابع اصلی نمایش دهد.
3. برنامه ای که در آن تابعی دو رشته را با حداکثر طول 10 دریافت کند و توسط تابع دیگر رشته اول را در رشته دوم کپی کند.
 

g.mehr

کاربر تازه وارد
تاریخ عضویت
8 اکتبر 2007
نوشته‌ها
14
لایک‌ها
0
سلام
کسی از شما برنامه جستجو در درخت دودویی و هم چنین حذف گره از درخت جستجوی دودویی رو داره؟
نیاز مبرم دارم.
لطفا برام pm بگذارید.
ممنون.
 

jajool

کاربر تازه وارد
تاریخ عضویت
16 دسامبر 2007
نوشته‌ها
1
لایک‌ها
0
سلام
من همه مطالب رو از اول تا آخر خوندم
جالب بود آقا آرش یک چند تا سوال هم بده ما حل کنیم راستی
شما تو مسابقات ACM شرکت کردی من که سنم قد نمیداد شرکت کنم D-:
ولی دو سه تاییش رو حل کردم
(-;
 

vahidfantasy

کاربر تازه وارد
تاریخ عضویت
4 اکتبر 2007
نوشته‌ها
4
لایک‌ها
0
سلام می خوام یه سوال بپرسم البته نمی دونم جاش اینجاست یا نه ولی خب می پرسم. خطای required Lvalue یعنی چی ؟
 

Arash_j13

Registered User
تاریخ عضویت
18 فوریه 2005
نوشته‌ها
778
لایک‌ها
2
محل سکونت
مشهد
شناسه از یه دید کلی دو دسته هستن اونایی که می تونن سمت چپ دستور انتصاب بیان و اونایی که نمی تونن بیان
به اونایی که می تونن بیان می گیم L-value و اونایی که فقط سمت چپ می یان رو می گیم R-value
حالا اینا شما احتیاج به شناسه L-value که به جاش R-value فرستادید
 

hamid133

کاربر تازه وارد
تاریخ عضویت
2 آپریل 2006
نوشته‌ها
69
لایک‌ها
0
من قصد دارم اینجا یه سری سوال هایی رو طرح کنم
البته احتمالا خودم هم اونها رو حل کردم فقط می زارم تا دوستان هم اگه بلدند حل کنند:D
سلام وخسته نباشید.
من از C چیز زیادی بلد نیستم...
استادمون گفته یه برنامه فکر بکر
بنویسید.گرافیکی هم نباشه
مهم نیست.
البته میدونم نوشتن این جور چیزا براتون افت
کلاس داره...
اگه برام بنویسید(شاید هم قبلا نوشتید)
ممنون میشم.
بازم تشکر.
 

Arash_j13

Registered User
تاریخ عضویت
18 فوریه 2005
نوشته‌ها
778
لایک‌ها
2
محل سکونت
مشهد
من پروژه نمی نویشم متاسفانه این کارو یه جور خیانت می دونم
 

hamid133

کاربر تازه وارد
تاریخ عضویت
2 آپریل 2006
نوشته‌ها
69
لایک‌ها
0
سلام
پروژه؟!؟!
بی خیال بابا...
مگه نگفتید این جا تمرین حل میکنید
اینم یه تمرینه که استاد داده
نه پولی توش هست نه هیچی
فقط یه چیزی یاد میگیریم و شاید هم
دو سه نمره بهمون اضافه کنن
 
بالا