• الإعلانات

    • فيصل الحربي

      تسجيل عضوية جديدة في المنتدى   01/31/2016

      السلام عليكم ورحمة الله وبركاته  عزيزي العضو الجديد :  حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة )  فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK)  وقم بتفعيل إشتراككم من هناك   

البحث في المنتدى

Showing results for tags 'math-expressions'.

  • البحث بالتاقات

    اكتب الكلمات المفتاحيه بينها علامه الفاصله
  • البحث بكاتب الموضوع

تم إيجاد 3 نتيجة

  1. السلام عليكم ورحمة الله وبركاته سنكمل في هذا المقال الجزء الثالث من سلسلة تعلم التعابير النمطية حيث تكلمنا عنها في دروس سابق,ربما كانت المقالات قصيرة نوعا ما ولكن تأكدوا أنه ما تحتويه يفوق ما تتخيله لو طبقت بأمثلة اخرى,تعمدت تقصيرها لتصل فكرة التعابير النمطية بشكل جيد ومفهومة,سأبدأ بأول مثال : هنا في السكربت 1.py قلنا للبايثون ان كان كل من [Nn] متطابق مع النص “python” فكانت إجابة البايثون بنعم وفي السكربت 2.py نفس الشيء غيرنا في string فأصبح“pythoN” فكانت إجابة البايثون بأنه يوجد تطابق,الآن في السكربت 3.py غيرنا في string فاصبح “pythos” أها هنا البايثون لم يجد أي تطابق فكانت الحالة None.حاول تجريب بأمثلة أخرى لتصل الفكرة. أنظر إلى الجدول التالي وطبق كل مافيه: قم بتجريب كل هذه الأمثلة وغير مافيها من تغيير لآن سنتكلم على وظيفة اخرى تعتبر وظيفة مستعملة بكثرة ايضا وهي Sub:تستخدم هذه الوظيفة في بحث عن مقطع معين من نص وتعويضه بنص أوكلمة أو جملة أخرى فالنأخذ مثال على ذلك: قلنا للبايثون إستبدل الجملة “Amer Chaabi number 789-8745-9998″ بفراغ و ,اطبع لنا ما يوجد في متغير الجديد s,هنا هدفنا أن نترك فقط رقم الهاتف ما رئيك أن نجعل ارقام الهاتف بدون رموز؟ جميل الآن لقد شملت كل أمور الاساسية في التعابير النمطية يمكنك البدأ في برمجة سكربتات بسيطة عليها وقرائة مقالات أخرى كبيرة لتستوعب أكثر واكثر.    
  2. دالة تحليل التعابير الرياضية

    السلام عليكم لطالما حلمت ببرمجة برنامج أدخل له تعبيرا مشابهاً للتالي 5*6/7+12-2 ويقوم بإيجاد الناتج , واليوم قد أتممت بناءدالة تقوم بذلك وهي أعظم ما برمجت على الإطلاق , وبرمجتها كانت معقدة للغاية لدرجة حقا لا توصف , إذ أن كل لمشكلة تظهر ينتج مشكلة أخرى ومع سلسلة الحل والمشكلة تم القضاء على كل المشاكل في الأخير . والتعرف على كل مؤثر وإعطاء الأسبقية للمؤثرات شيئ معقد جداً. فيما يمكن أن تستخدم الدالة : تستخدم في الآلات الحاسبة لأنها مفيدة جدا في هذا المجال إذ يها يمكن برمجة آلات حاسبة علمية ذات قدرة مميزة وصغيرة الحجم وسريعة العمل , وكذلك يمكن أن تستخدم في البرامج التجارية لحساب المبيعات وغيرها , ويمكن كذلك استعمالها في مفسرات لغات البرمجة , وفي تطبيقات كثيرة. أنا متأكد بنسبة 95% أنها تعمل تماماَ وقد تم تجريبها وإن وجدت نتيجة خاطئة يرجى الإخبار عنها . والدالة تم برمجتها على Borland C++ Builder والمؤثرات المستعملة كالآتي حسب الأسبقية: الأقواس :. ! : المضروب مثلا !6 ^ : الأس : 2^4 * / % : الضرب والقسمة وباقي القسمة . الجمع والطرح . كما أن الدالة تتعرف على النسبة Pi والعدد الطبيعي e: فيمكن كتابة e^3*pi وبرمجة معها دالة أخرى لكي ينفذا الدوال الرياضية التالية : جيب الزاوية : sin جيب التمام :cos الظل :tan الجذر :sqrt والملف الحاوي للدالتين هو :   #include<math.h>#define msg ShowMessage//   برمجة : خليل الأمين عبد الجواد   {الساحر }     ء// Programmed by : Khalil Alamin Abduljawwad    { magician }// Khal_i_l @ Yahoo.comString Equal(String);String math_funs(String &s){    int no=0,rc,i,j=0,len=0;    double natej;    String fun;    if(s.Pos("sin")<1 && s.Pos("cos")<1 && s.Pos("tan")<1 && s.Pos("sqrt")<1)return s;    for(i=1; i<=s.Length(); i++)    {        if(s[i]=='s' && s[i+1]=='i')no=1;        else if(s[i]=='c' && s[i+1]=='o')no=2;        else if(s[i]=='t' && s[i+1]=='a')no=3;        else if(s[i]=='s' && s[i+1]=='q')no=4;        if(no>0)        {            fun=s;            switch(no)            {            case 4:                fun.Delete(1,i+3);                break;            default:                fun.Delete(1,i+2);            }            for(j=1; j<=fun.Length(); j++)                if(fun[j]==')')                    break;            fun.Delete(j+1,fun.Length());            len=fun.Length();            fun=Equal(fun);            switch(no)            {            case 1:                natej=(sin(fun.ToDouble()));                break;            case 2:                natej=(cos(fun.ToDouble()));                break;            case 3:                natej=(tan(fun.ToDouble()));                break;            case 4:                natej=(sqrt(fun.ToDouble()));                len++;                break;            }            fun=String(natej);            s.Delete(i,len+3);            s.Insert(fun,i);        }        no=0;    }    return s;}String Equal(String s){    math_funs(s);    if(s=="Khalil")return ("He has programmed me from zero and by 230 line only. Don't think me an easy program, imagine a program analyze the string \"5+68*(5!/6^2)\" and calculate its result.");    String st,ss,S=s,k=s;    bool bo,if1;    double re=0;    int a,before,after,i,p1=0,p2=0;    s=s.LowerCase();    for(i=1; i<=s.Length(); i++)    {        if(s[i]=='e')        {            s.Delete(i,1);            s.Insert("2.71828182845905",i);        }        if(s[i]=='p' &&s[i+1]=='i')        {            s.Delete(i,2);            s.Insert("3.14159265358979",i);        }        if(s[i]=='ط')        {            s.Delete(i,1);            s.Insert("3.14159265358979",i);        }    }    if(s.Pos('(')<=0 && s.Pos('+')<=0 && s.Pos('-')<=0 && s.Pos('*')<=0 && s.Pos('/')<=0 && s.Pos('%')<=0 && s.Pos('!')<=0 && s.Pos('^')<=0 && s.Pos(')')<=0)        return s;u:    if(s.Pos('(')>0)    {        bo=true;        for(i=1; i<=s.Length(); i++)            if(s[i]=='(')p1=i;        for(i=p1+1; i<=s.Length(); i++)            if(s[i]==')')            {                p2=i;                break;            }        if(p2==0)        {            msg("هناك قوس '(' ناقص");            return s;        }        s.Delete(p2,s.Length());        s.Delete(1,p1);    }    try    {/////////////////////        while(s.Pos('!')>0 )        {            for(i=1; i<=s.Length(); i++)                if (s[i]=='!')                {                    a=i;                    break;                };            for(i=a-1; i>=1; i--)            {                if(s[i]=='+' || s[i]=='*' || s[i]=='/' || s[i]=='^' || s[i]=='!' || s[i]=='%' )                    break;                else if (s[i]=='-' && s[i-1]!='E')                {                    ShowMessage("صيغة غير صحيحة");                    return S;                }            }            ss=s;            for(i=a-1; i>=1; i--)                if(ss[i]=='+' || (ss[i]=='-'&& s[i-1]!='E') || ss[i]=='*' || ss[i]=='/' || ss[i]=='^' || s[i]=='!'|| s[i]=='%')                {                    before=i;                    break;                }                else before=0;            for(i=a+1; i<=ss.Length(); i++)                if (ss[i]=='+' || (ss[i]=='-'&& s[i-1]!='E') || ss[i]=='*' || ss[i]=='/' ||ss[i]=='^' || s[i]=='!'|| s[i]=='%')                {                    after=i;                    break;                }                else after=0;            ss.Delete(after,ss.Length());            ss.Delete(1,before);            st=ss;            String x=ss;            x.Delete(x.Pos('!'),x.Length());            long double fact=1;            for(int j=1; j<=x; j++)fact*=j;            re=fact;            s.Delete(before+1,ss.Length());            s.Insert(String(re),before+1) ;        }/////////////////////        while(s.Pos('^')>0 )        {            before=after=0;            for(i=1; i<=s.Length(); i++)                if (s[i]=='^')                {                    a=i;                    break;                };            ss=s;            for(i=a-1; i>=1; i--)                if(ss[i]=='+' || (ss[i]=='-'&& s[i-1]!='E') || ss[i]=='*' || ss[i]=='/' || ss[i]=='^'|| s[i]=='%')                {                    if(i==1)                    {                        before=0;                        break;                    }                    else                    {                        before=i;                        break;                    }                }            for(i=a+1; i<=ss.Length(); i++)                if (ss[i]=='+' || (ss[i]=='-'&& s[i-1]!='E') || ss[i]=='*' || ss[i]=='/' ||ss[i]=='^'|| s[i]=='%')                {                    after=i;                    break;                }            ss.Delete(after,ss.Length());            ss.Delete(1,before);            st=ss;            String x=ss;            x.Delete(x.Pos('^'),x.Length());            st.Delete(1,st.Pos('^'));            re=pow(x.ToDouble(),st.ToDouble());            s.Delete(before+1,ss.Length());            s.Insert(String(re),before+1);        }///////////////////////-------------------        while(s.Pos('*')>1 || s.Pos('/')>1 || s.Pos('%')>1)        {            for(i=1; i<=s.Length(); i++)                if (s[i]=='*' || s[i]=='/' || s[i]=='%')                {                    a=i;                    break;                };            ss=s;            for(i=a-1; i>=1; i--)            {                if (i>1)                {                    if((ss[i]=='-')&&ss[i-1]!='E')                    {                        before=i;                        break;                    }                }                if(ss[i]=='+' ||  ss[i]=='*' || ss[i]=='/' || ss[i]=='%')                {                    //---                    if(i==1)                    {                        before=0;                        break;                    }                    else                    {                        before=i;                        break;                    }                }                else before=0;            }            if(before >1 && (ss[before]=='-' || ss[before]=='+'))                before--;            if(ss[a+1]=='-')i=a+2;            else i=a+1;            for(; i<=ss.Length(); i++)                if (ss[i]=='+' || (ss[i]=='-'&& s[i-1]!='E') || ss[i]=='*' || ss[i]=='/' || ss[i]=='%')                {                    after=i;                    break;                }                else after=0;            ss.Delete(after,ss.Length());            ss.Delete(1,before);            st=ss;            String x=ss;            if(ss.Pos('-')==1)            {                x;                x.Delete(1,1);                if (x.Pos('-')>2)                    if1=false;            }            x=ss;            if(ss.Pos('/')>0)            {                x.Delete(x.Pos('/'),x.Length());                st.Delete(1,st.Pos('/'));                re=(x.ToDouble())/(st.ToDouble());            }            if(ss.Pos('*')>0)            {                x.Delete(x.Pos('*'),x.Length());                st.Delete(1,st.Pos('*'));                re=(x.ToDouble())*(st.ToDouble());            }            if(ss.Pos('%')>0)            {                x.Delete(x.Pos('%'),x.Length());                st.Delete(1,st.Pos('%'));                re=(x.ToInt())%(st.ToInt());            }            if(!if1)            {                s.Delete(before+1,ss.Length());                s.Insert("+"+String(re),before+1);            }            else            {                s.Delete(before+1,ss.Length());                if(String(re)[1]!='-')                    s.Insert("+"+String(re),before+1);                else  s.Insert(String(re),before+1);            }            s=s;        }        if(s[1]=='+')s.Delete(1,1);/////////////////////        for(i=1; i<=s.Length(); i++)        {            if(s[i]=='+' && s[i+1]=='-')s.Delete(i,1);            if(s[i]=='+' && s[i-1]=='-')s.Delete(i,1);        }        int u=0,p=0;        for(i=1; i<=s.Length(); i++)            if(s[i]=='-' ||s[i]=='+')            {                u++;                p=i;            }//if(p>1)        if(u==1 && (p>1 && s[p-1]=='E'));        else        {            while(s.Pos('+')>0 || s.Pos('-')>1)            {                for(i=2; i<=s.Length(); i++)                    if (s[i]=='+' || (s[i]=='-'&& s[i-1]!='E'))                    {                        a=i;                        break;                    };                ss=s;                after=0;                for(i=a+1; i<=ss.Length(); i++)                    if (ss[i]=='+' || (ss[i]=='-'&& s[i-1]!='E') )                    {                        after=i;                        break;                    }                ss.Delete(after,ss.Length());                st=ss;                String x=ss;                if(ss.Pos('-')>1)                {                    x.Delete(x.Pos('-'),x.Length());                    st.Delete(1,st.Pos('-'));                    re=(x.ToDouble())-(st.ToDouble());                }                if(ss.Pos('+')>0)                {                    x.Delete(x.Pos('+'),x.Length());                    st.Delete(1,st.Pos('+'));                    re=(x.ToDouble())+(st.ToDouble());                }                s.Delete(1,ss.Length());                s.Insert(String(re),1);            }        }        if(bo==true)        {            k.Delete(p1,p2-p1+1);            k.Insert(s,p1);            s=k;            bo=false;            goto u;        }    }    catch(...)    {        ShowMessage("صيغة غير مقبولة");        return S;    }    return s;}//---------------------------------------------------------------------------Lexer.rar
  3. السلام عليكم قمت بعمل كود لحساب الـ 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 اريد مشورتكم... والسلام مسك الختام