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

کسی جواب این سوال رو میدونه ؟؟؟؟؟

achil

Registered User
تاریخ عضویت
29 مارس 2012
نوشته‌ها
637
لایک‌ها
27
سلام به برو بچ برنامه نویس

ببخشید یه سوال داشتم


  1. مقدار جذر عدد حقیقی س را می توان به کمک رابطه زیر بدست آورد. (3 نمره)
xNew = (R/xOld + xOld)/2
که در آن xOld تخمین قبلی و xNew تخمین جدید می باشد.
مطلوبست پیاده سازی تابع double Sqrt(double R) که عدد حقیقیR را به عنوان پارامتر دریافت و جذر آنرا با دقت 3 رقم اعشار برمی گرداند.
 

achil

Registered User
تاریخ عضویت
29 مارس 2012
نوشته‌ها
637
لایک‌ها
27
اصلاح:مقدار جذر عدد حقیقی R را می توان به کمک رابطه زیر بدست آورد.
 

3POWER

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
1 دسامبر 2006
نوشته‌ها
2,756
لایک‌ها
543
سلام، برنامه به صورت زیر است، امیدوارم به دردتان بخورد.
کد:
#include <iostream.h>
 
double Sqrt(double);
 
int main()
{
       double R;
 
       cout << "Enter your input: ";
       cin >> R;
       cout << "Sqrt is: " << Sqrt(R) << endl;
 
       return 0;
}
 
double Sqrt(double R)
{
       double xOld = 1, xNew;
       const double e = 0.001; //epsilon
       bool finish = false;
       do
       {
              xNew = (R / xOld + xOld) / 2;
              finish = ((xNew - xOld)/xOld > -e) && ((xNew - xOld)/xOld < e);
              xOld = xNew;
       }while(!finish);
      
       return xNew;
}

مقدار اولیه xOld برای تخمین برابر 1 در نظر گرفته شده است، یا هر مقداری که بخواهید!
 

فایل های ضمیمه

  • doubleSqrt.rar
    227.5 KB · نمایش ها: 13
Last edited:

shamim98

کاربر تازه وارد
تاریخ عضویت
19 سپتامبر 2012
نوشته‌ها
649
لایک‌ها
132
محل سکونت
TehRUN
سلام، برنامه به صورت زیر است، امیدوارم به دردتان بخورد.
کد:
#include <iostream.h>
 
double Sqrt(double);
 
int main()
{
       double R;
 
       cout << "Enter your input: ";
       cin >> R;
       cout << "Sqrt is: " << Sqrt(R) << endl;
 
       return 0;
}
 
double Sqrt(double R)
{
       double xOld = 1, xNew;
       const double e = 0.001; //epsilon
       bool finish = false;
       do
       {
              xNew = (R / xOld + xOld) / 2;
              finish = ((xNew - xOld)/xOld > -e) && ((xNew - xOld)/xOld < e);
              xOld = xNew;
       }while(!finish);
      
       return xNew;
}

مقدار اولیه xOld برای تخمین برابر 1 در نظر گرفته شده است، یا هر مقداری که بخواهید!

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

3POWER

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
1 دسامبر 2006
نوشته‌ها
2,756
لایک‌ها
543
من خودم اجرایش کرده ام کد آن صحیح است در کجای آن به باگ برخوردید؟ در محیط ویژوال C++ صحیح است.
 
بالا