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

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

  1. #1
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    مرداد 1390
    محل زندگی
    Esfahan
    پست
    73

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

    سلام دوستان ، خسته نباشید
    میخواستم بدونم چطوری میشه دو عدد اعشاری را بدون استفاده از متغیر های float ، double بدست آورد !!؟!؟!
    مثلا از char ، string استفاده بشه
    اگه کسی میتونه بنویسه یا الگوریتمش را بهم بگید

    با تشکر فراوان . . .

  2. #2

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

    سلام
    توی ضرب ریاضی این موضوع چیکار می کنیم؟ باید همونکارو شبیه سازی کنین.
    فقط باید مجموع تعداد بعد ارقام بعد اعشار دو عدد رو داشته باشید تا بعد از ضرب به این اندازه برید جلو و بعد یه خونه شیفت بدید و نقطه رو در رشتتون جاگذاری کنید.

  3. #3
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    مرداد 1390
    محل زندگی
    Esfahan
    پست
    73

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

    اگه میشه یه کد بذارید ، متوجه نشدم
    خیلی ممنون

  4. #4

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

    گام اول: با اعلام اینکه دو عدد اعشاری وارد کن دو مقدار رو توی دوتا رشته میریزید.
    گام دوم:با دو تا حلقه متوجه میشید مجموعا چنتا عدد بعد از اعشار وجود دارد.
    گام سوم:در گام بعدی دو عدد رو بدن اعشار در هم ضرب می کنید.
    گام چهارم:در گام بعد عدد رو در یک رشته قرار می دید با این تفاوت که بعد از مجموعه تعداد ارقام اعشار دو عدد اولیه علامت اعشار میذارید.
    گام پنجم:بقیه ارقام عد حاصلضرب رو از بعد از اعشار قرار میدید.(داخل رشته)
    گام ششم:رشته رو چاپ می کنید.

    این صرفا راه حلیه که به ذهن من رسیده. ممکنه ریزه کاری هم داشته باشه.
    بنویسید اگه مشکلی بود مطرح کنید تا دوستان رفعش کنن.

  5. #5

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

    بفرمایید ;)
    #include <iostream>
    #include <string>

    using namespace std;


    void Split_Number(string,string,string&,string&,string& ,string&);
    void FillZero(string&,string&);
    void Calculate_Ashar(string&,string&,string&,bool&);
    void Calculate_Sahih(string& ,string&,string&,bool&);
    void Remove_Zero(string&);
    string Convert_To_String(int);
    int Convert_To_Int(string);
    string Str_Reverce(string); // baraye makoos kardane ashar . . .

    int main()
    {
    char y='y';

    while (y=='y' || y=='Y')
    {
    string Javab_Ashar="";
    string Javab_Sahih="";
    // get number a va b
    string FirsNumber;
    string SecondNumber;
    cout<<"enter the first number: ";
    getline(cin,FirsNumber);
    cout<<"enter the second number: ";
    getline(cin,SecondNumber);

    string x1="",x2="",y1="",y2="";

    Split_Number(FirsNumber,SecondNumber,x1,x2,y1,y2); // joda kardan ghesmate sahih va ashar va rikhtan dar motoghayer haye x1,x2,y1,y2
    FillZero(x2,y2); // yeksan kardan ghesmate ashare 2 ragham
    bool one=false;
    Calculate_Ashar(x2,y2,Javab_Ashar,one); //void Calculate_Ashar(string&,string&,string&,bool&);

    Calculate_Sahih(x1,y1,Javab_Sahih,one);

    Remove_Zero(Javab_Ashar); //void Remove_Zero(string&);

    if (Javab_Ashar[0]=='0' && Javab_Ashar.length()==1)
    cout<<endl<<"Javab = "<<Javab_Sahih<<endl;
    else
    cout<<endl<<"Javab = "<<Javab_Sahih<<"."<<Javab_Ashar<<endl;

    cout<<endl<<"Do you want to continue? (y/n): ";
    cin>>y;
    cout<<"____________________________________"<<endl <<endl;
    cin.ignore();
    }


    }



    void Split_Number(string a1,string b1,string& x1 ,string& x2,string& y1, string& y2)
    {
    bool flag1=false;
    bool flag2=false;

    for (unsigned int i = 0; i < a1.length(); i++)
    {
    if (a1[i]=='.')
    {
    flag1=true; // adad ashari hast
    }
    }

    for (unsigned int i = 0; i < b1.length(); i++)
    {
    if (b1[i]=='.')
    {
    flag2=true; // adad ashari hast
    }
    }
    if (flag1==true) // dar sorate ashari bodan : x1 = ghesmate sahih , x2=ghesmate ashari
    {
    unsigned int posA = a1.find(".");
    x1=a1.substr(0,posA); // ghesmate sahih ( az 0 ta . )
    x2 = a1.substr (posA+1); // ghesmate ashari ( az . ta akhar )
    }
    else // dar sorate ashari naboodan : x1=ghesmate sahih , x2=0
    {
    x1=a1;
    x2="0";
    }

    if (flag2==true) // manand bala ( baraye adade dovom )
    {
    unsigned int posB = b1.find(".");
    y1=b1.substr(0,posB);
    y2 = b1.substr (posB+1);
    }
    else
    {
    y1=b1;
    y2="0";
    }
    return;
    }

    void FillZero(string& x2,string& y2)
    {
    while (x2.length() > y2.length())
    {
    y2+='0';
    }

    while (y2.length() > x2.length())
    {
    x2+='0';
    }
    }

    void Calculate_Ashar(string& x2,string& y2,string& Javab_Ashar,bool& one)
    {
    string temp="";
    string temp1;
    string temp2;

    int r2=0;
    int r4=0;
    int sumHelp0=0;
    int sumHelp1=0;
    bool flg1=false;
    one=false;

    string strSumHelp="";
    for (int i = x2.length()-1; i >= 0; i--)
    {
    temp1=x2[i];
    temp2=y2[i];
    r2=Convert_To_Int(temp1);
    r4=Convert_To_Int(temp2);


    bool found=false;

    sumHelp1=r2+r4;

    if (one==true)
    {
    sumHelp1=(r2+r4)+1;
    one=false;
    found=true;
    }
    else
    {
    sumHelp1=r2+r4;
    }


    if (sumHelp1>=10)
    {
    flg1=true;
    }
    if (flg1==true)
    {
    if (found==true)
    {
    sumHelp1=(r2+r4+1)-10;
    }
    else
    {
    sumHelp1=(r2+r4)-10;
    }

    one=true;
    flg1=false;
    }
    else
    {
    if (found==true)
    {
    sumHelp1=(r2+r4)+1;
    }
    else
    {
    sumHelp1=r2+r4;
    }

    }
    strSumHelp=Convert_To_String(sumHelp1);
    temp+=strSumHelp;
    }
    one=one; // send true or false
    Javab_Ashar=Str_Reverce(temp);
    return;
    }

    void Calculate_Sahih(string& x1,string& x2, string& Javab_Sahih,bool& one)
    {
    int r1=Convert_To_Int(x1);
    int r3=Convert_To_Int(x2);
    int ReturnValue=0;

    if (one==true)
    ReturnValue=(r1+r3)+1;
    else
    ReturnValue=r1+r3;

    Javab_Sahih=Convert_To_String(ReturnValue);
    return;
    }

    void Remove_Zero(string& Javab_Ashar)
    {
    unsigned int posB;
    bool flg=false;
    //y1=b1.substr(0,posB);
    // y2 = b1.substr (posB+1);

    if (Javab_Ashar[0]!='0')
    {
    for (int i = Javab_Ashar.length()-1 ; i >=0 ; i--)
    {
    if (Javab_Ashar[i]!='0' && flg==false)
    {
    flg=true;
    posB=i;
    }
    }
    Javab_Ashar=Javab_Ashar.substr(0,posB+1);
    }
    }

    int Convert_To_Int(string str)
    {
    int number;
    number=atoi(str.c_str());
    return number;
    }

    string Convert_To_String(int number)
    {
    if (number == 0)
    return "0";
    string temp="";
    string returnvalue="";
    while (number>0)
    {
    temp+=number%10+48;
    number/=10;
    }
    for (unsigned int i=0;i<temp.length();i++)
    returnvalue+=temp[temp.length()-i-1];
    return returnvalue;
    //Ya :
    //#include <sstream>
    //stringstream ss; //create a stringstream
    //ss << number; //add number to the stream
    //return ss.str(); //return a string with the contents of the stream
    }

    string Str_Reverce(string str)
    {
    string temp="";
    for (int i = str.length()-1; i >= 0; i--)
    {
    temp+=str[i];
    }
    return temp;
    }

تاپیک های مشابه

  1. یه برنامه ی گرافیکی کم حجم بدون استفاده از ActiveX
    نوشته شده توسط IamOverlord در بخش برنامه نویسی مرتبط با بازی و گرافیک در VB6
    پاسخ: 4
    آخرین پست: شنبه 22 اسفند 1388, 14:03 عصر
  2. حرفه ای: یه برنامه ی گرافیکی کم حجم بدون استفاده از ActiveX
    نوشته شده توسط IamOverlord در بخش برنامه نویسی در 6 VB
    پاسخ: 3
    آخرین پست: شنبه 22 اسفند 1388, 07:16 صبح
  3. جمع دو عدد اشاری بدون استفاده از نوع داده اعشاری
    نوشته شده توسط raranjbar در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 10
    آخرین پست: جمعه 07 اسفند 1388, 15:31 عصر
  4. جمع دو عدد اعشاری هگزا و نمایش آن در خروجی
    نوشته شده توسط amir_cpp در بخش برنامه نویسی اسمبلی خانواده x86
    پاسخ: 0
    آخرین پست: پنج شنبه 10 خرداد 1386, 16:15 عصر
  5. جمع دو عدد اعشاری در اسمبلی
    نوشته شده توسط miracle در بخش برنامه نویسی اسمبلی خانواده x86
    پاسخ: 14
    آخرین پست: دوشنبه 04 دی 1385, 00:46 صبح

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

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