poor!a 15130 مالک ارسال شده در 24 بهمن، 2011 تمرین یه مثال ساده از آرایه یک بعدی: 32- برنامه ای بنویسید که با استفاده از آرایه های یک بعدی، 10 عدد از ورودی خوانده و با فرمت مناسب در خروجی چاپ کند. #include void main() { int x[10]; cout for(register i=0;i cin>>x; cout for(i=0;i cout } //end 2
poor!a 15130 مالک ارسال شده در 24 بهمن، 2011 تمرین اینم یک مثال از آرایه دو بعدی: 33- برنامه ای بنویسید که با استفاده از یک آرایه با 3 سطر و 2 ستون، 12 عدد از ورودی گرفته و آنها را با فرمت مناسبی نمایش دهد. #include void main() { int x[3][4]; cout for(register i=0;i for(register c=0; c cin>>x[c]; cout for(i=0;i for(int c=0;c cout } //end 2
poor!a 15130 مالک ارسال شده در 24 بهمن، 2011 تمرین برای اینکه با آرایه های دارای بیش از دو بعد هم آشنا بشید، یه مثال از آرایه های سه بعدی میزنم: 34- برنامه ای بنویسید که با استفاده از یک آرایه 3*2*2، 12 عدد از ورودی گرفته و آنها را با فرمت مناسبی چاپ کند. #include void main() { int x[3][2][2]; cout for(int i=0;i for(int j=0;j for(int k=0;k cin>>x[j][k]; cout for(i=0;i for(int j=0;j for(int k=0;k cout } //end 2
poor!a 15130 مالک ارسال شده در 24 بهمن، 2011 دوستانی که با کامپایلر Dev C++ کار کرده اند، حتما میدانند که این کامپایلر دو تابع مهم gotoxy و clrscr رو در خودش به صورت تعریف شده نداره. ولی میشه این دو رو تعریف کرد و حتی بعد از تعریف با فرمت .h ذخیره و به عنوان هدر فایل استفاده کرد. روش تعریف این دو در Dev C++ به شکل زیر است: #include #include using namespace std; void gotoxy(int x, int y) { HANDLE hConsoleOutput; COORD dwCursorPosition; cout.flush(); dwCursorPosition.X=x; dwCursorPosition.Y=y; hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hConsoleOutput, dwCursorPosition); } void clrscr() { system("cls"); } //end 2
poor!a 15130 مالک ارسال شده در 24 بهمن، 2011 مقدار دهی اوّلیه به آرایه ی دو بعدی: آرایه ی دو بعدی را میتوان هنگام تعریف، مقداردهی اولیه نمود. در این حالت می توانیم برای هر سطر از {} استفاده کنیم که در صورت عدم استفاده، کامپایلر اقدام به چیدمان سطری عناصر آرایه می کند. مثال: int x[2][3] = {{1,2,3,}, {4,5,6}}; int x[2][3] = {{1,2}, {3}}; int x[2][3] = {1,2,3}; int x[2][3] = {{1,2,3,}, 7}; //end نکته: در صورتی که تعداد {} های استفاده شده داخل {} اصلی بیشتر از تعداد سطر ها باشد یا تعداد داده های داخل هر سطر ({}) بیشتر از تعداد ستون های آرایه و یا هنگام مقداردهی در حالتی که برای سطر ها {} قرار ندهیم، تعداد عناصر بیشتر از تعداد عناصر آرایه باشد، خطا داریم. خالی گذاشتن بعد ها در تعریف آرایه دو بعدی: فقط و فقط در آرایه ی دو بعدی زمانی که مقداردهی اولیه انجام میشود، میتوانیم بعد اول را خالی بگذاریم. اما در هر شرایطی باید بعد دوم مقداردهی شود. که در این صورت باید حتما عناصر آرایه مقداردهی اولیه شوند. مثال: int x[][3] = {1,2,3}; int x[][3] = {1,2,3,4}; //end 2
poor!a 15130 مالک ارسال شده در 24 بهمن، 2011 تمرین از این به بعد به درخواست بعضی از دوستان، برخی تمارین کتاب آقای جعفرنژاد قمی را حل میکنیم: 35- برنامه ای بنویسید که با استفاده از حلقه های تو در تو، خروجی زیر را تولید کند: $$$$$$ $$$$$$ $$$$$$ $$$$$$ #include int main() { for(int i=0;i { for(int j=0;j cout cout } return 0; } //end 2
poor!a 15130 مالک ارسال شده در 24 بهمن، 2011 تمرین یه تمرین با switch 36- برنامه ای بنویسید که یک عدد بین 1 تا 7 از ورودی گرفته و روز هفته مربوط به آن را در خروجی چاپ کند. #include int main() { int x; cout cin>>x; switch(x) { case 1: cout case 2: cout case 3: cout case 4: cout case 5: cout case 6: cout case 7: cout default: cout } return 0; } //end 2
poor!a 15130 مالک ارسال شده در 24 بهمن، 2011 تمرین یه تمرین جالب با استفاده از for: 36- برنامه ای بنویسید که با استفاده از حلقه ها، خروجی زیر را چاپ کند: * ** *** **** ***** ****** #include int main() { for(int c=1;c { for(int i=1;i cout cout } return 0; } //end 2
poor!a 15130 مالک ارسال شده در 24 بهمن، 2011 تمرین یه تمرین با حلقه ها و شرط ها: 37- برنامه ای بنویسید که عددی از ورودی گرفته و کامل بودن یا نبودن آن را چاپ کند. (عددی کامل است که مجموع مقسوم علیه های غیر از خودش برابر خود عدد باشند. مانند 6) #include int main() { int n, s=1; cout cin>>n; for(int i=2;i if((n%i)==0) s+=i; if(s==n) cout else cout return 0; } //end 2
poor!a 15130 مالک ارسال شده در 24 بهمن، 2011 تمرین یه تمرین جالب با حلقه های تو در تو و شرط ها: 38- برنامه بنویسید که اعداد کامل کوچکتر از 10000 را چاپ کند. (عددی کامل است که مجموع مقسوم علیه های غیر از خودش برابر خود عدد باشند. مانند 6) #include int main() { int s; for(register long n=2;n { s=1; for(register i=2;i if((n%i)==0) { s+=i; if(s==n) cout } } return 0; } //end 2
poor!a 15130 مالک ارسال شده در 24 بهمن، 2011 تمرین یه برنامه برای آسنایی با کاراکتر ها: 39- برنامه ای بنویسید که یک کاراکتر از ورودی گرفته و کد اسکی آن را چاپ نماید. #include int main() { char a; short int b; cout cin>>a; b=a; cout return 0; } //end 3
poor!a 15130 مالک ارسال شده در 24 بهمن، 2011 تمرین 40- یکی از دودستان یه برنامه خواسته بودن که ماشین حساب کامل مهندسی باشه و علاوه بر داشتن فاکتوریل، جذر، توان، نسبت های مثلثاتی و ... بتونه این عملیت رو با چند عدد انجام بده. مثلا جمع سه عدد خب مطمئنا این برنامه ی ساده ای نمیتونه باشه و هنوز بعضی قسمت هاش رو درس ندادم. با این وجود کد برنامه رو براتون میزارم، داخل خود کد توضیحات رو نوشتم ولی بازم اگه سوالی بود در خدمتم. فقط بگم که این برنامه برای Dev c++ نوشته شده و در کامپایلر های قدیمی turbo و borland باید کمی تغییرش بدین! # include # include using namespace std; void help(); //in tabe be onvane help baraye amalgar ha mibashad barname ast; int fact (float a); //in tabe factoryel ra hesab mikonad void error(); //in tabe peyghame khata ra chap mikonad int main(){ float result,zakhire ,a[50]; char b; int flag=0,resultint, aint; for (int i=1; i if (i==1) { help(); cout cin>>result; i+=1;} do{ do{ system("cls"); help(); cout cout cin>>b; }while (b!='f' && b!='l'&& b!='z'&& b!='b'&& b!='c'&& b!='+'&& b!='m'&& b!='n'&& b!='-'&& b!='*'&& b!='/'&& b!='o'&& b!='s'&& b!='r'&&b!='q'&& b!='p'&& b!='\\'); flag=3; if (b=='\\'){ if (result!=floor(result)){ error(); flag=2; }//end if }//end if }while(flag==2); //*/ switch (b){ case 'r': i=0; system("cls"); continue; case 'f': result= fact(result); continue; case 's': result=sin(3.1416/(180/result)); resultint=result*100; result=resultint*1./100; continue; case 'o': result=cos(3.1416/(180/result)); resultint=result*100; result=resultint*1./100; continue; case 'm': resultint=result; if(resultint%180!=90){ result=3.1416/(180/result); result=tan(result); resultint=result*100; result=resultint*1./100;}//end if else error(); continue; case 'n': resultint=result; if(resultint%180!=0){ result=3.1416/(180/result); result=1/(tan(result)); resultint=result*100; result=resultint*1./100;}//end if else error(); continue; case 'z': zakhire=result; continue; case 'b': result=zakhire; continue; case 'l': if(result>0) result=log10(result); else error(); continue; }//end switch if (b=='c') break; //end for*/ system("cls"); help(); cout cout cin>>a; switch(b){ case '+': result+=a ;break; case '-': result -= a; break; case '*': result *= a; break; case '/': if (a==0){ error(); break; } else{ result/=a; break;} case 'p': result= pow(result,a); break; case 'q': result=pow(result, 1/a); break; case '\\': resultint=result; aint=a; if (a==floor(a)){ result = resultint%aint; break; }//end if else{ error(); break; }//end else }//end switch }//end for return 0; }//end main void help(){ cout cout couthttp://Http://cplusprogram.tk \\\\" cout cout cout cout cout cout cout cout cout [*] ;example(2*3=6)" cout cout cout cout cout cout cout cout cout cout cout }//end help int fact (float a){ int b=a, result=1; for (int i=2; i result*=i; }//end for return result; }//end fact void error(){ system("cls"); cerr system("pause"); }//end error //end 2
poor!a 15130 مالک ارسال شده در 24 بهمن، 2011 آرایه های دو بعدی به عنوان آرگومان تابع: برای ارسال آرایه های دو بعدی به عنوان آرگومان یک تابع باید نام تابع به عنوان آرگومان ذکر شود و برای تعریف پارامتر معادل آن باید مانند آرایه یک بعدی عمل کرد. در حالتی که در آرایه یک بعدی پارامتر به صورت آرایه بدون طول ذکر می شد، در آرایه دو بعدی طول سطر ذکر نمی شود ولی طول ستون حتما باید ذکر شود و در این حالت طول سطر به عنوان آرگومان دیگری به تابع ارسال میشود. شکل کلی ارسال آرایه دو بعدی به یک تابع: void f1(int a[5][10]); void f2(int a[][10], int); int main() { int a[5][10]; ... f1(a); f2(a,5); ... return 0; } void f1(int a[5][10]) { ... } void f2(int x[][10], int row) { ... } //end 2
poor!a 15130 مالک ارسال شده در 24 بهمن، 2011 این برنامه ابتدا مقادیر دو آرایه ی یک بعدی با 3 عنصر را از ورودی گرفته و حاصل جمع عناصر آرایه را با استفاده از تابعی در یک آرایه ی دیگر ریخته و در خروجی نمایش میدهد. #include void sum(int x[], int y[], int len, int out[]) { for(int i=0;i out=x+y; } void main() { int x[3], y[3], z[3]; cout for(int i=0;i cin>>x; for(i=0;i cin>>y; sum(x,y,3,z); cout for(i=0;i cout } //end 2
poor!a 15130 مالک ارسال شده در 24 بهمن، 2011 تابع جمع عناصر دو آرایه یک بعدی که از نظر تعداد عناصر با هم برابرند. در این تابع len طول آرایه ها و out آرایه ای است که جمع آرایه ها در آن ریخته میشود. void arraysum(int x[], int y[], int len, int out[]) { for(int i=0;i out=x+y; } //end 1
poor!a 15130 مالک ارسال شده در 24 بهمن، 2011 این برنامه ابتدا مقادیر دو آرایه ی یک بعدی با 3 عنصر را از ورودی گرفته و حاصل ضرب عناصر آرایه را با استفاده از تابعی در یک آرایه ی دیگر ریخته و در خروجی نمایش میدهد. #include void arraymultiply(int x[], int y[], int len, int out[]) { for(int i=0;i out=(x*y); } void main() { int x[3], y[3], z[3]; for(int i=0;i cin>>x; for(i=0;i cin>>y; arraymultiply(x,y,3,z); for(i=0;i cout } //end 2
poor!a 15130 مالک ارسال شده در 24 بهمن، 2011 تابع ضرب عناصر دو آرایه یک بعدی که از نظر تعداد عناصر با هم برابرند. در این تابع len طول آرایه ها و out آرایه ای است که ضرب آرایه ها در آن ریخته میشود: void arraymultiply(int x[], int y[], int len, int out[]) { for(int i=0;i out=(x*y); } //end 2
poor!a 15130 مالک ارسال شده در 24 بهمن، 2011 این برنامه از کد اسکی 0 شروع کرده و کاراکتر مربوطه را تایپ میکند و تا 127 ادامه دارد: #include void main() { char a; cout for(int b=0;b { a=b; cout } } //end 2
poor!a 15130 مالک ارسال شده در 24 بهمن، 2011 برنامه ای که عددی از ورودی گرفته و یک لوزی با طول ضلع عدد ورودی با استفاده از * چاپ نماید. #include void main() { int x,y,c=1; cout cin>>x; y=x; while(x>0) { for(int s=0;s cout for(s=c;s>0;s--) cout c+=2; x--; cout } c-=4; x=(y-1); while(x>0) { for(int s=y;s>=x;s--) cout for(s=c;s>0;s--) cout c-=2; x--; cout } } //end 2
poor!a 15130 مالک ارسال شده در 24 بهمن، 2011 [h=2]سورس برنامه ی هشت وزیر برای Turbo C++[/h] این برنامه که برای کامپایل کردن در Turbo C++ نوشته شده، طول اضلاع صفحه شطرنج و تعداد وزیر ها رو گرفته و سپس به کمک توابع بازگشتی، تمامی حالات قرار گرفتن اونها رو طوری که یکدیگر رو تهدید نکنند، با زدن یک کلید نمایش میده. #include #include #include #include #include using namespace std; const int m=20; int k[m][m]; int Count=0; int v=0 , n=0 , i=0 , j=0 , state=0; void remove(int i,int j) { int p,q; k[j]=0; Count--; for(p=0;p if(p!=i) k[p][j]--; for(p=0;p if(p!=j) k[p]--; p=i+1; q=j+1; while(p { k[p++][q++]--; } p=i-1; q=j-1; while(p>=0 && q>=0) { k[p--][q--]--; } p=i+1; q=j-1; while(p=0) { k[p++][q--]--; } p=i-1; q=j+1; while(p>=0 && q { k[p--][q++]--; } } int apply(int i,int j) { int p,q; k[j]=1; Count++; for(p=0;p if(p!=i) k[p][j]++; for(p=0;p if(p!=j) k[p]++; p=i+1; q=j+1; while(p { k[p++][q++]++; } p=i-1; q=j-1; while(p>=0 && q>=0) { k[p--][q--]++; } p=i+1; q=j-1; while(p=0) { k[p++][q--]++; } p=i-1; q=j+1; while(p>=0 && q { k[p--][q++]++; } } void draw() { system("cls"); for(int p=0;p { for(int q=0;q { if(k[p][q]!=1) cout else cout } cout } cout } void check() { if(Count==v) { state++; draw(); cout int c=getch(); if(c=='q')exit(0); } } void move(int p,int q) { apply(p,q); check(); for(int i=p;i { for(int j=0;j if(k[j]==0) move(i,j); } remove(p,q); } int main() { cout cout cin>>n; cout cin>>v; system("cls"); draw(); for(i=0;i for(j=0;j move(i,j); system("cls"); cout getch(); return 0; } //end 2
ارسال های توصیه شده