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

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




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

نام تاپيک: يك مشكل اساسي با ++c (عزيزان زود جواب بديد كه براي فردا مي خوام)

  1. #1
    آخر فروم باز mhentezari's Avatar
    تاريخ عضويت
    Sep 2004
    پست ها
    1,360

    5 يك مشكل اساسي با ++c (عزيزان زود جواب بديد كه براي فردا مي خوام)

    سلام
    آقا من يك متغير float يا double تعريف مي كنم مثل x . بعدش ميگم

    x=5/12 . اما pc در جواب اين معادله ساده مي نويسه

    x=0 !!!!!!!!!

  2. #2
    اگه نباشه جاش خالی می مونه peyman_joojoo's Avatar
    تاريخ عضويت
    Sep 2004
    محل سكونت
    tehran
    پست ها
    314

    پيش فرض

    اگه مقدار ثابتی هست از کانست استفاده کن من که با این مشکا مواجه نشدم

  3. #3
    آخر فروم باز mhentezari's Avatar
    تاريخ عضويت
    Sep 2004
    پست ها
    1,360

    پيش فرض

    نه ثابت نيست.
    اين كل برنامست:

    #include <iostream>
    #include <conio.h>
    #include <math.h>
    #include <vector>
    using namespace std;

    int main(void)
    {
    double x,y; //position of the dot
    int cir=0,sqr=0,counter=0;
    float result;

    do
    {
    x=(2*rand()/RAND_MAX)-1; //random numbers between [-1,1]
    y=(2*rand()/RAND_MAX)-1;

    if ( pow(x,2)+pow(y,2) <1) //the dot is in circle and square
    {
    cir++;
    sqr++;
    }
    else //the dot is just in square
    sqr++;
    counter++;
    }while (counter <=20000000);

    result = (cir/sqr)*4;
    cout <<result;

    getch();
    return 0;
    }


    اگر اين برنامه درست اجرا بشه بايد عدد پي رو بده.
    x,y دو عدد بين -1 تا 1 خواهند بود اما توي اينجا هميشه يا صف ميشه يا يك. در واقع با اونها مثل يك int بر خورد ميكنه.

    كمك كنيد!!

  4. #4
    آخر فروم باز mhentezari's Avatar
    تاريخ عضويت
    Sep 2004
    پست ها
    1,360

    پيش فرض

    اما x= 5/12 رو هم كه تست كردم بازم صفر شد!

  5. #5
    پروفشنال
    تاريخ عضويت
    Dec 2005
    محل سكونت
    تهران - سه راه افسريه - شهرك كاروان (رضويه)
    پست ها
    748

    پيش فرض

    #include <iostream>
    #include <conio.h>
    #include <math.h>
    #include <vector>
    using namespace std;

    int main(void)
    {
    double x,y; //position of the dot
    int cir=0,sqr=0,counter=0;
    float result;

    do
    {
    x=(2*rand()/RAND_MAX)-1; //random numbers between [-1,1]
    y=(2*rand()/RAND_MAX)-1;

    if ( pow(x,2)+pow(y,2) <1) //the dot is in circle and square
    {
    cir++;
    sqr++;
    }
    else //the dot is just in square
    sqr++;
    counter++;
    }while (counter <=20000000);

    result = (float)cir/sqr*4;
    printf("%f\n",result);

    getch();
    return 0;
    }
    Last edited by _LOVE_CODER_; 25-12-2005 at 00:25.

  6. #6
    آخر فروم باز mhentezari's Avatar
    تاريخ عضويت
    Sep 2004
    پست ها
    1,360

    پيش فرض

    لطفا با cout بنويسيد نه با printf .ممنون
    Last edited by mhentezari; 25-12-2005 at 00:48.

  7. #7
    آخر فروم باز hamidreza_buddy's Avatar
    تاريخ عضويت
    Sep 2004
    محل سكونت
    شریف
    پست ها
    1,167

    پيش فرض

    خب مشخصه.
    ما دو نوع تقسیم داریم.:
    1- تقسیم int بر int که حاصل آن حتما یک int است ( 0=5/12 یا 3=10/3)
    اگر دقت کردید حاصل جواب فقط خارج قسمت تقسیم است. (یعنی یک عدد صحیح)
    2- یک یا دو طرف آن double یا float باشد. که در این صورت حاصل تقسیم به صورت اعشاری و دقیق خواهد بود.

    ببینید توی این تقسیم ای ن اتفاق ها می افتد.
    1- 5 از نوع int در نظر گرفته می شود.
    2- 12 هم از نوع int در نظر گرفته می شود.
    3- پی تقسیم از نوع تقسیم int بر int است.
    4- پس حاصل صفر می شود.
    5- int به float تبدیل می شود و به صورت صفر در float ذخیره می شود.

    پس نتیجه صفر است.
    ولی اگر این کار را کنی:
    float a=5;
    float b=12;
    float c;
    c= a/b;

    c در آخر به صورت یک عدد اعشاری ذخیره می شود. c = 0.4166
    Last edited by hamidreza_buddy; 25-12-2005 at 13:58.

  8. #8
    آخر فروم باز hamidreza_buddy's Avatar
    تاريخ عضويت
    Sep 2004
    محل سكونت
    شریف
    پست ها
    1,167

    پيش فرض

    برای اینکه مقدار واقعی ذخیره بشه این کارو بکن:

    float c;
    c = (float)5 / (float) 12;
    پس دو طرف را به صورت float ذخیره کرده و حاصل تقسیم بهصورت 0.41666 در c ذخیره می شود.

  9. #9
    آخر فروم باز mhentezari's Avatar
    تاريخ عضويت
    Sep 2004
    پست ها
    1,360

    پيش فرض

    ممنونم. كارم راه افتاد. البته به روش ديگه.

Thread Information

Users Browsing this Thread

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

User Tag List

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

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