PDA

View Full Version : سوال: توضیح در مورد این کد؟



vb8334
یک شنبه 27 تیر 1389, 16:11 عصر
با سلام به تمامی دوستان عزیز

دوستان من یه سوال داشتم :
سوالم این بود : برنامه یک عدد رو میی گیره و به ما میگه که این عدد چه روز و چه ماهی هستش
عدد یه روز از سال هستش مثلآ 85 روز از سال که می شه 3/23 ؟

یه چند تا از این کد سوال داشتم

1.این متغیر d رو چرا برابر با صفر گذاشته
2.چرا یه جا m=k+6 کرده و یه جا m=k+7 کرده

ممنون

اینم کد :



#include "conio.h"
#include "stdio.h"
#include "math.h"
int main()
{
int n,j,m,d,k;
printf("\n Enter Your Number : ");
scanf("%d",&n);
if(n>186)
{
n=n-186;
k=(n/30);
d=n-k*30;
}
if(d==0)
{
m=k+6;
d=30;
printf("Mounth : %d \t Days : %d ",m,d);
}
else
m=k+7;
j=n/31;
d=n-j*31;
if(d==0)
{
m=n/31;
d=31;
}
else
m=j+1;
printf("Mounth : %d \t Days : %d ",m,d);

getch();
return 0;
}
In The Name Of God

matinfar1981
یک شنبه 27 تیر 1389, 19:36 عصر
سلام
تا اونجایی که من فهمیدم شرط d==0 برای چک کردن آخرین روز هر ماهه. m=7+k رو کامنتش کردم تغییری در روند اجرا ایجاد نکرد چون کد های بعدی مقدار m رو تعیین می کردن.

drstrike
جمعه 01 مرداد 1389, 07:36 صبح
1.این متغیر d رو چرا برابر با صفر گذاشته

برابر صفر نذاشته، مقایسه کرده!
اگه عدد بزرگتر از 186 باشه و d برابر صفر باشه یعنی روز 30 ام اون ماهه؛ بنابراین روز(d) رو 30 میگیره و چون عدد از 186 بزرگتره (یعنی نیم سال دومه) ماه رو بعلاوه 6 می کنه.



2.چرا یه جا m=k+6 کرده و یه جا m=k+7 کرده

اگه d صفر بشه k یک میشه؛ پس k+6 رو به m میده ولی اگه d صفر نشه k صفره و مقدار k+7 به m داده میشه.