خوب می تونید برا اینکه تاپیک آموزش هم داشته باشه سوالاتتون رو درباره ی طرز کار کد ها بگید؟
Printable View
خوب می تونید برا اینکه تاپیک آموزش هم داشته باشه سوالاتتون رو درباره ی طرز کار کد ها بگید؟
سلام دوست خوبم
راستش ديدم زبان برنامه نويسي شما c هستش
ولي من بايد vb ياد بگيرم
آخه براي امتحان بايد ياد بگيرم كه قبول شم...
يا حق (:
نمي شه ديگه كد نمونه نذارين؟
اين كد كه گذاشتين خيلي خوبه كه! چي از اين بهتر بذاريم آخه!!!
باشه از هفته دیگه کد نمی ذارم تا کم کم خودتون با روش های کوتاه کردن کد آشنا شین.
عاليه حيف وقت ندارم
نقل قول:
سلام دوست خوبم
راستش ديدم زبان برنامه نويسي شما c هستش
ولي من بايد vb ياد بگيرم
آخه براي امتحان بايد ياد بگيرم كه قبول شم...
يا حق (:
دوستان عزیز لطف کنید پستها بی ربط ندید همین الآن هیچی نشده 3 صفحه شد تاپیک! اگر جواب دارید کوتاهتر پست کنید اگر نه که دیگه این که شما vb کارید و c بلد نیستید و یا وقت ندارید به دوستان این انجمن هیچ مربوط نمیشه!نقل قول:
عاليه حيف وقت ندارم
لطف می کنید.
دقیقا من هم این هفته کمی سرم خلوت بود، نشستم یک دستی یه کد اول بکشم دیدم یک کد دوم آقا حامد پست داد! دیگه تمام، این هفته رو بی خیال شدمنقل قول:
نمي شه ديگه كد نمونه نذارين؟
اين كد كه گذاشتين خيلي خوبه كه! چي از اين بهتر بذاريم آخه!!!
آقا حامد لطف می کنی این قسمت رو توضیح بدی مخصوصا آنجا که رنگی کردم...ممنوننقل قول:
int f(int n)
{
j = s = 0;
e = 15;
do {
s <<= 4;
s += (n&e)>>j;
e <<= 4;
j += 4;
} while (e>>4 < n);
return s == n;
}
سلام
تابع F میاد قرینه n رو در s قرار می ده و در خط آخر تابع هم همونطور که میبینین اونا رو با هم مقایسه میکنه.
حالا در مورد چگونگی حساب کردن قرینه:
همون طور که می دونید اگه م یه عدد رو در مبنای دو 4 رقم 4 رقم از هم جدا کنیم هر کدوم از این 4 رقم ها برابر با 1 رقم در مبنای 16 می باشند. چون که 16 = 2 به توان 4
برای مثال برای عدد 1011100 روش کار اینه
------- اول اونو 4 تا 4 تا از سمت راست جدا می کنیم =1100، 101
------- هر کدوم از رقم ها رو در مبنای 16 می نویسیم 2(1100) = 10(12) = 16(C) و 2(101) = 10(5) = 16(5)
------- ------- پس عدد مورد نظر در مبنای 16 برا بر است با 16(5C)
خوب حالا به راحتی میتونیم نتیجه بگیریم که می تونیم قرینه ی یک عدد رو در مبنای 16 میشه بدون تبدیل اون عدد به مبنای 16 بدست آورد به طوری که اول اون عدد رو در مبنای 2 می نویسیم و 4 تا 4 تا رقم ها شو جدا میکنیم و اونا رو بر عکس می کنیم.
برای مثال برای عدد 1011100 روش کار اینه
------- اول اونو 4 تا 4 تا از سمت راست جدا می کنیم =1100، 101 و آخر اونایی که کمتر از 4 رقم دارن 0 اضافه می کنیم تا 4 رقمی بشن = 1100، 0101
------- سپس اونارو برعکس می کنیم : =0101، 1100
------- خب اگه این عدد رو به مبنای 16 ببریم میبینیم که برابر است با 16(C5)
خوب این دوتا عدد رو با هم مقایسه میکنیم و میبینیم که با هم فرق می کنن پس 10(92) در مبنای 16 قرینه نیست.
حالا اینم توضیحات برنامه اگه می خواین بهتر متوجه شین یه کاغذ وردارین و یه ورودی فرضی (مثلا همین 92) بهش بدین رو رو کاغذ کار برنامه رو خط به خط دنبال کنین.
موفق باشید.
دوست عزیز این چیزایی که شما گفتید همه درستنقل قول:
چند تا سوال داشتم:
1.عملگر >> یا << همون شیفت به چپ . شیفت به راست هست دیگه
2. s+=(n&e)<<j توی اینجا چرا n و e رو &کردی اصلا این خط چه کار میکنه ؟
3.eرو که مساوی 15 گذاشتی چه کار میکنه ؟
4.کلا تابع f رو توضیح بدی ممنون میشم:20:
سلام
1. بله
2 و 3 . همون طور که میدونی در اول مقدار e عدد 10(15) یا 2(1111) هست زیرا وقتی هر عددی رو با e، & کنیم عدد حاصل برابر با 4 بیت اول اون عدد میشه برای مثال 1111 & 10111001 = 1001 و در دور دوم while مقدار e برابر با 11110000 میشه چون که این دور ما 4 بیت دوم رو می خوایم پیداکنیم برای مثال 11110000 & 10111001 = 10110000. مقدار j برای از بین بردن 0 های اضافه ی جلوی عدد است. برای مثال در دور دوم 4 عدد 0 اضافه جلوی عدد است و ما اون رو j بار به سمت راست شیفت می دیم، به همین دلیل j هر دفعه 4 تا اضافه میشه.
4. کل این حرفایی که تو این دو تا پست بود رو بزار جواب این سوال!
KEEP POSTING
چه جالبنقل قول:
سلام
1. بله
2 و 3 . همون طور که میدونی در اول مقدار e عدد 10(15) یا 2(1111) هست زیرا وقتی هر عددی رو با e، & کنیم عدد حاصل برابر با 4 بیت اول اون عدد میشه برای مثال 1111 & 10111001 = 1001 و در دور دوم while مقدار e برابر با 11110000 میشه چون که این دور ما 4 بیت دوم رو می خوایم پیداکنیم برای مثال 11110000 & 10111001 = 10110000. مقدار j برای از بین بردن 0 های اضافه ی جلوی عدد است. برای مثال در دور دوم 4 عدد 0 اضافه جلوی عدد است و ما اون رو j بار به سمت راست شیفت می دیم، به همین دلیل j هر دفعه 4 تا اضافه میشه.
4. کل این حرفایی که تو این دو تا پست بود رو بزار جواب این سوال!
واقعا يه كد خلاقانه بود