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

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




نمايش نتايج 1 به 5 از 5

نام تاپيک: کمک برای نوشتن برنامه فاکتوریل

  1. #1
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Nov 2008
    پست ها
    213

    پيش فرض کمک برای نوشتن برنامه فاکتوریل

    سلام به همه دوستان

    من یه برنامه برای محاسبه فاکتوریل نوشتم و می خوام که در textbox اولی یه عدد وارد کنم و وقتی روی ذکمه count کلیک می کنم جواب رو در textbox دومی نمایش بده.



    در زیر کدهایی که برای دکمه count نوشتم:


    int fact = 1;
    string number = textBox1.Text;
    Int32 n = Int32.Parse(number);
    int a = 1;
    {
    if (a > n)
    textBox2.Text = fact.ToString;
    else
    {
    fact = fact * a;
    a++;
    }

    }

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

  2. #2
    کاربر فعال تالار .Net senaps's Avatar
    تاريخ عضويت
    Jul 2008
    محل سكونت
    خونمون
    پست ها
    4,547

    پيش فرض

    سلام.... شما دو جا اشتباه کردین.... اول اونجایی که از شرط IF استفاده کردین! در صورتی که باید از حلقه استفاده بکنین....
    دوم شرطی هست که گذاشتید! اشتباه هستش....
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    حالا من چیکار کردم، از باکس txt_GetNumber عددی رو گرفتم و داخل num قرار دادم... و بعد روی دگمه‌ی Count کلیک کردم...
    تابع میاد بررسی میکنه با حلقه که ایا a از عددی که من دادم کوچیکتره؟! بله کوچیکتره پس میره داخل حلقه...
    fact رو که مقدارش 1 هست ضرب در a میکنه که مقدارش 1 هست و میره بیرون برای مرحله‌ی بعدی حلقهa++ و a رو برابر 2 مکینه!! و هیمنجوری میره جلو....

    میتونین برای دیدن روش کار، روی حلقه یک بریک پوینت بگذارید تا اتفاق افتادنش رو کاملا مشاهده بکنین....
    (کدها رو یه بار توی نوت پد پیست کنین و بعد از اونجا ببرید توی ویژوال اوستودیو!)...

  3. این کاربر از senaps بخاطر این مطلب مفید تشکر کرده است


  4. #3
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Nov 2008
    پست ها
    213

    پيش فرض

    با سلام
    به خاطر لطفی که کردید و وقتی که گذاشتید سپاسگزارم.
    موفق و پیروز باشید

  5. #4
    در آغاز فعالیت
    تاريخ عضويت
    Aug 2007
    پست ها
    4

    پيش فرض

    در قسمت حلقه for باید به جای a < num , بنویسید: a<=num تا فاکتوریل عدد وارد شده به تکست باکس محاسبه شود نه فاکتوریل یکی کمتر از آن.
    در کل بهتر است از روش بازگشتی برای محاسبه فاکتوریل استفاده کنید.

  6. #5
    کاربر فعال تالار .Net Msba's Avatar
    تاريخ عضويت
    Dec 2006
    محل سكونت
    ! My Mind
    پست ها
    506

    پيش فرض

    در کل بهتر است از روش بازگشتی برای محاسبه فاکتوریل استفاده کنید.
    هرگز!
    لازم به یادآوری است که در زبان های برنامه نویسی غیر محاسباتی نظیر زبان های رایج برنامه نویسی مانند C,C# و... فراخوانی هر تابع زمانی را مصرف می کند که در پیوستگی پیاپی قابل چشم پوشی نیست. از طرفی حجم استفاده از استک نیز برای اعداد بالا نیز دیگر مورد پسند نیست. از یک دید دیگر نیز شما پیوسته در حال پاس دادن مقداری هستید که ممکن است چند بایت باشد و این عمل بار ها و بارها می بایست توسط CPU هندل شود. اما فرض کنید که از یک حلقه استفاده کنید:
    1- تابعی فراخوانی نمی گردد
    2-حافظه برای پاس دادن مقادیر از خروجی توابع درگیر نمی شود
    3-استک مصرف نمی شود. (با اینکه حجم بسیار بالایی دارد اما استفاده بیهوده از منابع خواهد بود.)
    4- آنالیز و دیباگ برنامه های مستقیم بسیار ساده تر و کم زمان بر تر از Recursive است.
    پیشنهاد برنامه نویسان عدم استفاده از توابع بازگشتی تا حد امکان است.
    اینگونه توابع به طور مثال مناسب حرکات در بعد ها هستند: 2 نظیر درخت یا 3 نظیر کارنو 5 متغیره و ....

    موفق باشید.
    Last edited by Msba; 08-02-2013 at 13:47. دليل: اشتباه تایپی!

Thread Information

Users Browsing this Thread

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

User Tag List

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

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