تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 3 از 14 اولاول 123456713 ... آخرآخر
نمايش نتايج 21 به 30 از 137

نام تاپيک: مسابقه ی کوتاه ترین برنامه

  1. #21
    داره خودمونی میشه hamed valizadeh's Avatar
    تاريخ عضويت
    Jul 2007
    محل سكونت
    تهران
    پست ها
    184

    پيش فرض

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

  2. #22
    Banned
    تاريخ عضويت
    Jun 2006
    محل سكونت
    زاهدان
    پست ها
    6,088

    پيش فرض

    سلام دوست خوبم
    راستش ديدم زبان برنامه نويسي شما c هستش
    ولي من بايد vb ياد بگيرم

    آخه براي امتحان بايد ياد بگيرم كه قبول شم...

    يا حق (:

  3. #23
    حـــــرفـه ای Ar@m's Avatar
    تاريخ عضويت
    Nov 2006
    پست ها
    3,300

    پيش فرض

    نمي شه ديگه كد نمونه نذارين؟
    اين كد كه گذاشتين خيلي خوبه كه! چي از اين بهتر بذاريم آخه!!!

  4. #24
    داره خودمونی میشه hamed valizadeh's Avatar
    تاريخ عضويت
    Jul 2007
    محل سكونت
    تهران
    پست ها
    184

    پيش فرض

    باشه از هفته دیگه کد نمی ذارم تا کم کم خودتون با روش های کوتاه کردن کد آشنا شین.

  5. #25
    داره خودمونی میشه NARAFIGH2's Avatar
    تاريخ عضويت
    Sep 2007
    محل سكونت
    0571
    پست ها
    56

    پيش فرض

    عاليه حيف وقت ندارم

  6. #26
    حـــــرفـه ای taia's Avatar
    تاريخ عضويت
    Aug 2005
    محل سكونت
    چو ایران نباشد تن من مباد
    پست ها
    2,107

    پيش فرض

    سلام دوست خوبم
    راستش ديدم زبان برنامه نويسي شما 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;
    }
    آقا حامد لطف می کنی این قسمت رو توضیح بدی مخصوصا آنجا که رنگی کردم...ممنون
    Last edited by taia; 04-08-2008 at 05:36.

  7. #27
    داره خودمونی میشه hamed valizadeh's Avatar
    تاريخ عضويت
    Jul 2007
    محل سكونت
    تهران
    پست ها
    184

    پيش فرض

    سلام

    تابع 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) بهش بدین رو رو کاغذ کار برنامه رو خط به خط دنبال کنین.

    موفق باشید.

  8. #28
    داره خودمونی میشه rf.ariyapoor's Avatar
    تاريخ عضويت
    Mar 2008
    محل سكونت
    تهران
    پست ها
    103

    پيش فرض

    سلام

    تابع 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 رو توضیح بدی ممنون میشم

  9. #29
    داره خودمونی میشه hamed valizadeh's Avatar
    تاريخ عضويت
    Jul 2007
    محل سكونت
    تهران
    پست ها
    184

    پيش فرض

    سلام
    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

  10. #30
    حـــــرفـه ای Ar@m's Avatar
    تاريخ عضويت
    Nov 2006
    پست ها
    3,300

    پيش فرض

    سلام
    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. کل این حرفایی که تو این دو تا پست بود رو بزار جواب این سوال!
    چه جالب
    واقعا يه كد خلاقانه بود

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •