رفتن به مطلب

برنامه نویسی c++ - آموزش و سورس برنامه ی سی پلاس پلاس


poor!a

ارسال های توصیه شده

تمرین

 

یه مثال ساده از آرایه یک بعدی:

 

32- برنامه ای بنویسید که با استفاده از آرایه های یک بعدی، 10 عدد از ورودی خوانده و با فرمت مناسب در خروجی چاپ کند.

#include

 

void main()

{

int x[10];

cout

for(register i=0;i

cin>>x;

cout

for(i=0;i

cout

}

 

 

//end

لینک به دیدگاه
  • پاسخ 172
  • ایجاد شد
  • آخرین پاسخ

بهترین ارسال کنندگان این موضوع

بهترین ارسال کنندگان این موضوع

تمرین

 

اینم یک مثال از آرایه دو بعدی:

 

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

لینک به دیدگاه

تمرین

 

برای اینکه با آرایه های دارای بیش از دو بعد هم آشنا بشید، یه مثال از آرایه های سه بعدی میزنم:

 

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

لینک به دیدگاه

دوستانی که با کامپایلر 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

لینک به دیدگاه

مقدار دهی اوّلیه به آرایه ی دو بعدی:

 

آرایه ی دو بعدی را میتوان هنگام تعریف، مقداردهی اولیه نمود. در این حالت می توانیم برای هر سطر از {} استفاده کنیم که در صورت عدم استفاده، کامپایلر اقدام به چیدمان سطری عناصر آرایه می کند.

 

مثال:

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

لینک به دیدگاه

تمرین

 

از این به بعد به درخواست بعضی از دوستان، برخی تمارین کتاب آقای جعفرنژاد قمی را حل میکنیم:

 

35- برنامه ای بنویسید که با استفاده از حلقه های تو در تو، خروجی زیر را تولید کند:

$$$$$$

$$$$$$

$$$$$$

$$$$$$

 

#include

 

int main()

{

for(int i=0;i

{

for(int j=0;j

cout

cout

}

return 0;

}

 

 

//end

لینک به دیدگاه

تمرین

 

یه تمرین با 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

لینک به دیدگاه

تمرین

یه تمرین جالب با استفاده از for:

 

36- برنامه ای بنویسید که با استفاده از حلقه ها، خروجی زیر را چاپ کند:

*

**

***

****

*****

******

#include

 

int main()

{

for(int c=1;c

{

for(int i=1;i

cout

cout

}

return 0;

}

 

 

//end

لینک به دیدگاه

تمرین

 

یه تمرین با حلقه ها و شرط ها:

 

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

لینک به دیدگاه

تمرین

یه تمرین جالب با حلقه های تو در تو و شرط ها:

 

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

لینک به دیدگاه

تمرین

 

یه برنامه برای آسنایی با کاراکتر ها:

 

39- برنامه ای بنویسید که یک کاراکتر از ورودی گرفته و کد اسکی آن را چاپ نماید.

#include

 

int main()

{

char a;

short int b;

cout

cin>>a;

b=a;

cout

return 0;

}

 

 

//end

لینک به دیدگاه

تمرین

 

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

لینک به دیدگاه

آرایه های دو بعدی به عنوان آرگومان تابع:

 

برای ارسال آرایه های دو بعدی به عنوان آرگومان یک تابع باید نام تابع به عنوان آرگومان ذکر شود و برای تعریف پارامتر معادل آن باید مانند آرایه یک بعدی عمل کرد.

در حالتی که در آرایه یک بعدی پارامتر به صورت آرایه بدون طول ذکر می شد، در آرایه دو بعدی طول سطر ذکر نمی شود ولی طول ستون حتما باید ذکر شود و در این حالت طول سطر به عنوان آرگومان دیگری به تابع ارسال میشود.

 

شکل کلی ارسال آرایه دو بعدی به یک تابع:

 

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

لینک به دیدگاه

این برنامه ابتدا مقادیر دو آرایه ی یک بعدی با 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

لینک به دیدگاه

تابع جمع عناصر دو آرایه یک بعدی که از نظر تعداد عناصر با هم برابرند. در این تابع len طول آرایه ها و out آرایه ای است که جمع آرایه ها در آن ریخته میشود.

 

void arraysum(int x[], int y[], int len, int out[])

{

for(int i=0;i

out=x+y;

}

 

//end

لینک به دیدگاه

این برنامه ابتدا مقادیر دو آرایه ی یک بعدی با 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

لینک به دیدگاه

تابع ضرب عناصر دو آرایه یک بعدی که از نظر تعداد عناصر با هم برابرند. در این تابع len طول آرایه ها و out آرایه ای است که ضرب آرایه ها در آن ریخته میشود:

 

void arraymultiply(int x[], int y[], int len, int out[])

{

for(int i=0;i

out=(x*y);

}

 

//end

لینک به دیدگاه

این برنامه از کد اسکی 0 شروع کرده و کاراکتر مربوطه را تایپ میکند و تا 127 ادامه دارد:

 

#include

 

void main()

{

char a;

cout

for(int b=0;b

{

a=b;

cout

}

}

 

//end

لینک به دیدگاه

برنامه ای که عددی از ورودی گرفته و یک لوزی با طول ضلع عدد ورودی با استفاده از * چاپ نماید.

 

#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

لینک به دیدگاه

[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

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • اضافه کردن...