تبليغاتX
C++ آموزش

این تابع شماره سال را به عنوان ورودی می گیرد در صورت کبیسه بودن مقدار یک و در غیر این صورت مقدار صفر بر میگرداند.

منطق برنامه اینست که سال های 1367و1371 را بعنوان مبداء میگیرد بعد با توجه به کوچکتر یا بزرگتر بودن سال نسبت به این دو مبداء چهارتا چهارتا کم یا زیاد میشود تا عدد حاصل به سال مورد نظر برسد اگر رسید کبیسه است وگرنه نیست.

int is_leap_year(int y){

int count=1367,tmp=0;

 while(count>y)

   count=count-4;

if(count==y)

   tmp=count;

 count=1371;

while(count

   count=count+4;

if((tmp==y)||(count==y))

    return 1;

else

    return 0;

}

خب راه حل بالا برای شروع خوب است اما چندان جالب نیست. در واقع این راه حل پیچیدگی زمانی بهینه ای ندارد اما به عنوان تمرین قابل قبول است. اما راه حل بهتر یک خط فرمول ریاضی است. میدانیم که هر چهار سال یک بار سال کبیسه واقع می شود. پس میتوان با یک تقسیم بر چهار سال کبیسه را شناسایی کرد. اما یک مشکل کوچک وجود دارد.

مشکل این است که عدد سال در تقسیم بر چهار باید چه ویژگی داشته باشد؟ در ریاضیات  مبحث بخشپذیری مطلبی با عنوان اعداد همنهشت مطرح میشود که میگوید عدد a در تقسیم بر b باقیمانده ای خواهد داشت که بین صفر تا b-1 است بنابراین تمام اعداد را میتوان در b مجموعه قرار داد که اعضا هر مجموعه در تقسیم بر b دارای باقیماده ی یکسان هستند.

حال با در نظر گرفتن این مطلب میتوان نشان داد که سالهایی را که بعنوان مبدا در نظر گرفته بودیم در تقسیم بر چهار دارای باقیمانده ی 3 هستند. پس سال های کبیسه اعداد با باقیمانده ی 3 در تقسیم بر چهار هستند.

بنابراین عبارت  year%4==3  میتواند کبیسه بودن یک سال را مشخص کند.

int is_leap_year(int y){

     return y%4==3;

 

+ نوشته شده توسط سجاد مهدی بیرقدار در سه شنبه نوزدهم تیر 1386 و ساعت 23:50 |

آرایه ها تعدادی متغییر هم نوع هستند که با یک نام مشترک ویک عدد بنام اندکس

منحصر به فرد برای هر متغیر شناخته می شوند. حافظه مر بوط به این متغییر ها بصورت متوالی و پشت سرهم در حافظه قرار میگیرند. وبه صورت

];تعداد[نام   نوع دادهای

تعریف می شوند.

مثال:

int x[10];

float y[4];

char z[30];

نکته:

1.اندکس اولین خانه از صفر شروع می شود.

2.در صورت دستیابی به خانه های تعریف نشده از یک آرایه مثلاx[10]پیغام خطایی دریافت نخواهید کرد. لذا همیشه مراقب بازه اندکس ها باشید چرا که چنین دستیابی های غیر مجازی می تواند نتایج عجیب و غیر قابل پیش بینی داشته باشد مثل تغییر مقادیر سایر متغیرها.

 

بعد از تعریف یک آرایه شما می توانید با عباراتی مثل x[0]  x[1]  …x[n-1] به عناصر یا همان متغییر ها ی آرایه دسترسی داشته باشید در واقع عبارات فوق کاملا مشابه

متغییر های معمولی دیگر عمل میکنند.

 

برای مثال می توانید بنویسید:

cin>>x[0];

با این دستور می توانید اولین عنصر آرایه را بخوانید.یا با قرار دادن این دستور در یک حلقه forواستفاده از اندکس حلقه بجای عدد صفر تمام عناصر آرایه را بخوانید.

for(int i=0;i<10;i++)

  cin>>x[i];

نکته:

1.انتساب آرایه ها به یکدیگر غیر مجاز است و سبب بروز خطای کامپایلری می شود.

int x[10];

int y[10];

خطا        x=y;

2.از آرایه های کاراکتری برای ذخیره ی رشته ها استفاده می شود که در جلسات بعدی بیان خواهد شد.

 

3.آرایه ها می توانند چند بعدی باشند مثل یک ماتریس دو بعدی  یا یک مکعب سه بعدی که تجسمش کمی مشکل است.معمولا برنامه نویسان از آرایه های بیشتر از دوبعدی استفاده نمی کنند.

int a[3][4][5];

مقدار اولیه در آرایه ها:

آرایه ها مانند سایر انواع مقدار اولیه ندارند لذا باید در صورت لزوم به آنها مقدار اولیه داد.

به مثال ها توجه کنید.

int x[5]={2,56,4,8,4};

پنج خانه آرایه بترتیب با اعداد ذکر شده مقدار دهی میشوند.

int y[2][3]={1,4,5,9,54,21,97};

int y[2][3]={{1,4,5},{54,21,97};

دو دستور بالا یک کار برد دارند ام خوانایی دستور دوم بیشتر است.

Int y3d[2][3][4]={{{1,2,3,4},{5,6,7,8},{9,10,11,12}},

                           {{13,14,15,16},{17,18,19,20},{21,22,23,24}}};

برای آرایه های چند بعدی بهتر است برای خوانایی بیشتر مقادیر هر سطر را در یک آکولاد قرار دهید.

int z[]={1,2,3};

در صورتی که اندازه آرایه ذکر نشودبرابر تعداد مقادیر ذکر شده در نظر گرفته می شود.

int x[5]={1,2};

int y[2][3]={1,4,5,9};

int y3d[2][3][4]={};

در صورتی که تعداد مقادیر کمتر از تعداد خانه ها باشد سایر خانه ها مقدار صفر میگیرند.

 

نکته:

آرایه ی عمومی همیشه مقدار اولیه صفر دارد.یعنی تمام خانه های آن صفر اند.

 

دریافت این پست به صورت پی.دی.اف

به زودی لینک پی.دی.اف پست های قبلی رو هم درست می کنم.

تابعد

+ نوشته شده توسط سجاد مهدی بیرقدار در یکشنبه هفدهم تیر 1386 و ساعت 18:7 |