نمایش نتایج 1 تا 11 از 11

نام تاپیک: جمع دو عدد اشاری بدون استفاده از نوع داده اعشاری

  1. #1
    کاربر جدید آواتار raranjbar
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    نجف آباد
    پست
    22

    جمع دو عدد اعشاری بدون استفاده از نوع داده اعشاری

    میخواستم دو عدد اعشاری رو با هم جمع کنم و نتیجه رو مشاهده کنم ولی با این شرط که فرض کنیم هنوز نوع داده اعشاری یعنی double یا float وجود ندارد

    مثلا"
    968.09+283.919
    آخرین ویرایش به وسیله raranjbar : پنج شنبه 06 اسفند 1388 در 17:36 عصر دلیل: برای درج کدها از تگ مربوط به کد استفاده کنید /

  2. #2

    نقل قول: جمع دو عدد اشاری بدون استفاده از نوع داده اعشاری

    کار زیاد سختی نیست ، همون کاری رو که شما برای جمع کردن معمولی اعداد (صحیح ) انجام میدین ،

    در مورد اعداد اعشاری هم همینطوره .






  3. #3
    کاربر دائمی آواتار simul8or
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    API::WIN32-64
    پست
    110

    نقل قول: جمع دو عدد اشاری بدون استفاده از نوع داده اعشاری

    سوال شما واضح نیست. می توانید بیشتر توضیح دهید؟؟ دقیقا قصد انجام چه عملی را دارید؟
    آخرین ویرایش به وسیله simul8or : پنج شنبه 06 اسفند 1388 در 01:38 صبح دلیل: غلط نگارشی

  4. #4
    کاربر جدید آواتار raranjbar
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    نجف آباد
    پست
    22

    نقل قول: جمع دو عدد اشاری بدون استفاده از نوع داده اعشاری

    نقل قول نوشته شده توسط simul8or مشاهده تاپیک
    سوال شما زیاد واضح نیست. می توانید بیشتر توضیح دهید؟؟ دقیقا چه عملی می خواهید انجام دهید؟
    میخواستم دو عدد اعشاری رو با هم جمع کنم و نتیجه رو مشاهده کنم ولی با این شرط که فرض کنیم هنوز نوع داده اعشاری یعنی double یا float وجود ندارد

    مثلا"
    968.09+283.919
    آخرین ویرایش به وسیله raranjbar : پنج شنبه 06 اسفند 1388 در 17:35 عصر

  5. #5
    کاربر جدید آواتار SamanS
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    تهران
    پست
    3

    نقل قول: جمع دو عدد اشاری بدون استفاده از نوع داده اعشاری

    برای هر عدد اعشاری از دو تا رشته استفاده کن. یکی برای قسمت صحیح و یکی برای قسمت اعشاری و خودت عمل جمع رو بنویس و رقم به رقم عمل جمع رو انجام بده. مثلاً اگه می‌خوای رقم xi رو با yi جمع کنی و رقم نقلی از مرحله‌ی قبل c باشه اون‌وقت جواب می‌شه:
    z[i] = (x[i] + y[i] + c) % 10
    رقم نقلی مرحله‌ی بعد هم می‌شه:

    c = (x[i] + y[i]] + c) / 10
    تابع جمع می‌تون این‌طوری باشه:
    char * sum(char * x, char * y, int c)
    دفعه‌ی اول قسمت اعشاری رو بفرست که با هم جمع شن. فقط یادت باشه که رقم نقلی نهایی قسمت‌های اعشاری رو یه جا ذخیر کنه تا برای جمع قسمت صحیح ازش استفاده کنی مثلاً اگه بخوای 0.1 رو با 1.9 جمع کنی بعد از انجام جمع قسمت اعشار رقم نقلی داری که باید ازش برای قسمت صحیح استفاده کنی (به همین دلیل هست که تابع sum آرگومان سوم به نام c داره که همون رقم نقلی هست)

  6. #6
    کاربر دائمی آواتار simul8or
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    API::WIN32-64
    پست
    110

    نقل قول: جمع دو عدد اشاری بدون استفاده از نوع داده اعشاری

    دوست عزیز کد زیر قسمت صحیح و اعشار را بدون استفاده از float یا double جدا می کند:(مطمئنا این راحت ترین و کوتاهترین کد نیست):

    #include <iostream>
    #include <cstdlib>

    ////////////////////
    //code by simul8or//
    ////////////////////
    using namespace std ;

    int dm(char*);

    int main ()
    {
    char* a=new char;
    char* b=new char;

    int xi=0,yi=0,xd=0,yd=0;

    cin>>a>>b;

    xi=atoi(a);
    yi=atoi(b);

    xd=dm(a);
    yd=dm(b);


    system("pause");
    return 0 ;
    }

    int dm(char* temp)
    {
    temp=strchr(temp,'.');
    temp[0]='1';
    return atoi(temp);
    }
    قسمت صحیح که به راحتی جمع می شود.
    اما قسمت اعشار: به اول تمام اعداد اعشار عدد 1 اضافه شده است، بنابر این اعدادی مانند 005 به صورت 1005 در متغییر از نوع int بدون از دست دادن صفر ها ذخیره می شوند.
    حال شما می توانید با نوشتن یک تابع عمل جمع را به صورت زیر انجام دهید:
    فرض کنید دو قسمت اعشار 1919 و 109 باید با هم جمع شوند،(یعنی 0.919 و 0.09) برای این کار ابتدا اعداد را معکوس کنید(تابع آن موجود است) اعداد می شوند 9191 و 901 عدد 1 را حذف کنید، اعداد می شوند 919 و 90 و آخرین مرحله جمع این دو عدد است که باید به صورت عکس جمع معمولی صورت گیرد یعنی 9+0 و 1+9 و 9+0 و در هر مرحله کری به جای انتقال به رقم سمت چپ ، به راست می رود. درست عکس عمل جمع عادی. و در آخر با معکوس کردن حاصل جمع، قسمت اعشار نیز بدست می آید.
    باز تاکید می کنم این ساده ترین راه نیست.

  7. #7
    کاربر جدید آواتار raranjbar
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    نجف آباد
    پست
    22

    نقل قول: جمع دو عدد اشاری بدون استفاده از نوع داده اعشاری

    این برنامه حداکثر دو عدد صحیح 500 رقمی رو با هم جمع میکه ولی نمی دونم چه کدی به این برنامه اضافه کنم تا این برنامه بتونه دو عدد اعشاری رو بدون استفاده از نوع double و float جمع کنه.
    #include <IOstream>
    #include <String>
    using namespace std;

    const int Lenght = 500;
    void Sum(char *FirstNum,char *SecondNum);
    void Rev(char *Str);

    int main()
    {
    char First[Lenght];
    char Second[Lenght];
    cout << "Type Number" << "\n";
    cin >> First >> Second;
    Sum(First,Second);
    return 0;
    }

    void Sum(char *FirstNum,char *SecondNum)
    {
    int iFirstLen,iFirst;
    int iSecondLen,iSecond;
    int iSum;
    int carry = 0;
    char cSum[Lenght];
    int k = 0;

    iFirstLen = strlen(FirstNum) - 1;
    iSecondLen = strlen(SecondNum) - 1;

    while( iFirstLen >=0 || iSecondLen >=0)
    {
    iFirst = FirstNum[iFirstLen] - 48;
    iSecond = SecondNum[iSecondLen] - 48;

    if( iFirstLen < 0 )
    iFirst = 0;
    if( iSecondLen < 0 )
    iSecond = 0 ;

    iSum = iFirst + iSecond + carry;
    if(iSum > 9)
    carry = 1;
    else
    carry = 0;
    cSum[k] = ( iSum % 10 ) + 48;
    k++;
    iFirstLen --;
    iSecondLen--;
    }
    if( carry == 1)
    {
    cSum[k] = iSum % 10 + 48;
    cSum[k++] = '\0';
    }
    else
    cSum[k] = '\0';
    Rev(cSum);
    cout << "\n" << cSum << endl;
    }
    void Rev(char *str)
    {
    int iStr;
    char temp[Lenght];
    iStr = strlen(str) - 1 ;
    int i = 0;
    for(int k = iStr ; k >= 0 ; k--)
    {
    temp[i] = str[k];
    i++;
    }
    temp[i] = '\0';
    strcpy(str,temp);
    }



  8. #8
    کاربر جدید آواتار raranjbar
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    نجف آباد
    پست
    22

    نقل قول: جمع دو عدد اعشاری بدون استفاده از نوع داده اعشاری

    کسی میتونه توضیح بیشتری بده؟

  9. #9
    کاربر جدید آواتار raranjbar
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    نجف آباد
    پست
    22

    نقل قول: جمع دو عدد اشاری بدون استفاده از نوع داده اعشاری

    نقل قول نوشته شده توسط salar_cpp_cs مشاهده تاپیک
    کار زیاد سختی نیست ، همون کاری رو که شما برای جمع کردن معمولی اعداد (صحیح ) انجام میدین ،

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

  10. #10

    نقل قول: جمع دو عدد اشاری بدون استفاده از نوع داده اعشاری

    خوب شما که میگید کار سختی نیست یه کم کمک کنید تا معلوم بشه کار سختی هست یا نه
    شما تو کاغذ چه جوری دو تا عدد اعشاری رو جمع میکنی ؟

    از سمت راست ممیز ...

    خوب همینو پیاده سازی کن .

    همه چیز رو که آماده (هلو بپر تو گلو) به آدم نمیدن . خودتون هم باید کمی خلاقیت به خرج بدین .






  11. #11
    کاربر جدید آواتار raranjbar
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    نجف آباد
    پست
    22

    نقل قول: جمع دو عدد اشاری بدون استفاده از نوع داده اعشاری

    نقل قول نوشته شده توسط salar_cpp_cs مشاهده تاپیک
    شما تو کاغذ چه جوری دو تا عدد اعشاری رو جمع میکنی ؟

    از سمت راست ممیز ...

    خوب همینو پیاده سازی کن .

    همه چیز رو که آماده (هلو بپر تو گلو) به آدم نمیدن . خودتون هم باید کمی خلاقیت به خرج بدین .
    برنامه اصلی رو نوشتم فقط تو ریزه کاری هاش گیر کردم.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •