الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

خطأ حسابى فى ال c++

مغلق
بدأه mufic_semsem في 24 فبراير 2005 · 5 رد · 449 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندى مشكلة جامد جدا مع البورلاند سى بلس بلس

مطلو ب مننا عمل برنامج بيحل المعادلات مع بعض بطريقة جاوس و عملت فكرة مبديئة لة و اشتغلت فى معظم الحالات

بس وانا بجرب حالة فيهم بالصدقة لاقيت ان فى الحالة دى فى ناتج واحد من اربع نواتج بيطلع غلط مشيت و لا الكودد المهم فى الاخر لاقيت الخطأ بس مش عارف من اية و لا يتصلح ازاى

فى احدى المعادلات بيكون

x-y*z

حيث

x=0.5

y=3

z=.16667

القيمة دى جاية من معادلات تانية ناتجة من طرح و قسمة وضرب المهم

الناتج بتاع المعادلة دى المفروض يطلع صفر و لكن لما بكون معرف المتغيرات float بيطلع 2.723. و شوية ارقام كتيرة

و لو عرفت المتغيرات douible بيطلع -1.456 و شوية ارقام كدة

ازاى المشكلة دى بطلع و ازاى الكمبيوتر حل غلط و ازاى اتفادى الغلط دة

""""انا متأكد ان دة اللى بيحصل علشان انا مشيت ورا البرنامج بكذا طريقة """"

يا ريت يا جماعة الحل بسرعة :wacko: :wacko: :blink:

لا اله الا الله .......................................... محمد رسول الله

#3

المشكلة عندك تكمن في عدم اختيار النوع الأمثل للمتغيرات.

لذلك فلا بد أن تضع الكود حتى نستطيع أن ندرس الحالة.

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

#4
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 #include<iostream>
#include<conio>
#include<iomanip>




void main()
{
   double a[4][5]={{2,4,3,4,1},{2,1,3,5,1},{8,1,6,3,1},{1,2,6,5,1}};
   double tmp;
   int b=0;

   for(int y=1;y<5;y++)
   {
    double tmp=a;// for the diagnol == 1
      for(int i=0;i<5;i++)
      {
          a=a/tmp;
      }




    for(int j=y;j<4;j++)// for the under diagnole == 0
    {
         tmp=a[j];
   	 for(int i=0;i<5;i++)
     	 {
           a[j]=a[j]-tmp*a;
         }
    }

    b++;
   }



   for(int y=0;y<3;y++)// for the upper diagnole == 0
   {
    for(int j=y;j<3;j++)
    {
         tmp=a[y][j+1];
   	 for(int i=0;i<5;i++)
     	 {
           a[y]=a[y]-tmp*a[j+1];
         }
    }

   }




      for(int j=0;j<4;j++)
   {
      for(int i=0;i<5;i++)
      {
   	 cout<< a[j]<<setw(12);
      }
      cout<<endl;
   }
             cout<<endl<<endl;
   double x[4];
   for(int i=0;i<4;i++)
   {
      x=a[4];
      cout<<" The "<<(i+1)<<" Element is  ==>> "<<x<<endl;
   }
   getch();
}

لمفروض ال element التالت يكون صفر

" دة حل المعادلات بطريقة جاوس

لا اله الا الله .......................................... محمد رسول الله

#5

لو تم تغير المتغيرات الى float سيكون ناتج العنصر التالت

- 1.49012e-08

لا اله الا الله .......................................... محمد رسول الله

#6
1           0           0           0   0.0555556
          -0           1           0           0   0.0555556
           0           0           1           0 2.77556e-17
          -0          -0          -0           1    0.166667


        The 1 Element is  ==>> 0.0555556
 The 2 Element is  ==>> 0.0555556
 The 3 Element is  ==>> 2.77556e-17
 The 4 Element is  ==>> 0.166667
Press Enter to continue!

السلام عليكم

لقد طبقت البرنامج و النواتج صحيحة.

أما ناتج العنصر الثالث فهو تقريبا يساوي الصفر

هذا الموضوع مغلق.

مواضيع مشابهة