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

برنامج لايجاد ال exponential (اختصارا e )

مغلق
بدأه allko في 1 نوفمبر 2005 · 4 رد · 949 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم
قمت بعمل كود لحساب الـ exponential تبعا للعلاقة الرياضية التالية
e=1+(1/n!) ; 0<n

وقد استخدمت قيما لـ n من 1 الى 10
(كلما زادت n فان الكسر (1/n!) (انتبه فهو يظهر لك معكوسا)يصغر,لذلك فالقيم بعد 10 تكون صغيرة للغاية ويمكن اهمالها)
المهم هذا هو الكود وهو يعمل 100% فقد جربته واظهر لي القيمة 2.71828

#include <iostream.h>
int main()
{
	double n,x=1,v=1,e=1,f=0;

  	for(n=1;n<=10;++n)
	{
     while(x<=n)
  {v=v*x;
  x=x+1;}	
     e=e+(1/v);      
	}
	cout<<e<<endl
	return 0;
}

v هو متغير...بالتحديد هو مجموع المضاريب من 1 الى 10
لكن اليس من المفروض ان اضيف السطر e=e+1; فوق سطر cout<<e<<endl;
لان الكود الذي كتبته لا ياخذ بالحسبان الرقم 1 الموجود في المعادلة الرياضية انما عمله
ان يحسب مجموع مضاريب الاعداد من 1 الى 10

اريد مشورتكم...

والسلام مسك الختام

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 1 أبريل 2014 في 20:35 — السبب: Add some tags

#2

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

اقتباس
double n,x=1,v=1,e=1,f=0;

لو حبيت تزود السطر الى بتقول عليه لازم تبدأ من صفر

#3

قصدك على n

مهوا n لازم تبدا من الواحد لاني ببدا احسب المضاريب بدءا من الواحد وهادا ما الو علاقة بالواحد الي في المعادلة

لاحظ انو

e=1+(1/1!)+(1/2!)+

يعني في 1 غير ال

 1/1!
#4

انت ناسي انك في البدايه اعطيت المتغير e القيمه 1

double n,x=1,v=1,e=1,f=0;

وبعدها بتجمع على e

لو عايز تأخر جمع الواحد ليها ضع e في البدايه تساوي صفر

لكن انت مطول الكود شويه , يعني مش بتستفيد من القيم المحسوبه من قبل

لاحظ هذا الكود ولاحظ الفرق

#include <stdio.h>
void main() {
  int   i;
  float j = 1, e = 1; // e = 1 + sum((1/!1),(1/!2),...(1/!n)) n --> infinity
  for(i = 1; i < 11; i++) {
    j *= i;
    e += 1/j;
  }
  printf("\n[*] the e = %f\n", e);
}

تعمل نفس الوظيفه لكن أسرع بكثير

وشوف على العكس

#include <stdio.h>
float fact(int num) {
  if(num > 1) return num*fact(num -1);
  else return 1;
}
void main() {
  int i;
  float e = 1;
  for( i = 10; i > 0; i--) {
    e += 1/fact(i);
  }
  printf("\n[*] the e = %f\n", e);
}

المشاكل و الغباء و أفكار الدكاتره :lol:

تم تعديل هذه المشاركة بواسطة Asm4all في 2 نوفمبر 2005 في 03:31

#5

يا استاذ Asm4all

والله ردك رائع انا ما كنت منتبه للنقطة هديك...

بالنسبة للكود التاني والتالت فاعتقد اني حاجل النظر فيه لوقت لاحق لاني لسى ما اخدت الحجات هادي...لانو لسى بدرس بالجامعة

وعكل حال شكرا كمان مرة ومرورك شرفني

وشكرا كمان للاخPointerVC

وكل عام وانتا والجميع بخير

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

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