• الإعلانات

    • فيصل الحربي

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

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

Techno_Fantasy

اعضاء جدد
  • عدد المشاركات

    9
  • تاريخ الانضمام

  • تاريخ اخر زياره

السمعه بالموقع

0 عادي

عن Techno_Fantasy

  • الرتبة
    عضو جديد
  1. شكرا جزيلا لك أخي عماد.. سأقوم بتجربتها و إفادتكم جزاكم الله كل خير..
  2. المشكلة أنني لا أستطيع استخدام MikTex لأنني أستخدم الـ Mac OS X .. فهل يمكن الحصول على هذه الـpackage بدونه؟ و لك كل الشكر
  3. عزيزي دعنا في البداية نمر على مبدأ الـrecursive function و هي عبارة عن دالة تحتوي ضمن تعلمياتها call لنفسها و هذا موجود و بكثرة في المعادلات مثلا عندما نقول: مضروب(4) = 4 * 3 * 2 * 1 علما أن مضروب(3) = 3 * 2 * 1 إذن: مضروب(4) = 4 * مضروب(3) و بشكل عام: مضروب(س) = س * مضروب(س-1) فلو أردنا أن نقوم ببرمجة معادلة المضروب الأخيرة فإننا سنحصل على الخوارزمة التالية: int function factorial (int x) return x * factorial(x-1) و لكن لو تتبعنا البرنامج سنجد أننا دخلنا في حلقة لا نهائية.. مشكلة أليس كذلك؟ و لكن هناك حل لها.. و هو أن نقوم بوضع حالة لا تنادي الدالة فيها نفسها.. و في حالتنا نعلم أنه لا مضروب للأعداد السالبة.. إذا آخر مضروب هو 0 .. و مضروب(0) = 1 إذا دعنا نعدل الخوارزمة لتصبح: unsigned_int function factorial (unsigned_int x) if ( x == 0 ) return 1 else return x * factorial(x-1) و تتبع عمل هذا النوع من البرامج هو ليس سهلا فلنقم بذلك خطوة خطوة.. و لنفرض أن x تساوي 4 كما في مثالنا سابقا a = factorial(4) x = 4 ( 4 == 0 ) false, go to else return 4 * factroial(3) % we have to compute factorial(3) first x = 3 ( 3 == 0 ) false, go to else return 3 * factorial(2) % we have to compute factorial(2) first x = 2 (2 == 0) false, got to else return 2 * factrial(1) % we have to compute factorial(1) first x = 1 (1 == 0) false, got to else return 1 * factorial(0) % we have to compute factorial(0) first x = 0 ( 0 == 0 ) true, go to next instruction return 1 return 1 * 1 % replaced factroial(0) by its returned value which is 1 return 2 * 1 % replaced factorial(1) by its returned value which is 1*1 = 1 return 3 * 2 % replaced factorial(2) by its returned value which is 2*1 = 1 return 4 * 6 % replaced factorial(3) by its returned value which is 3*2 = 6 a = 24 % replaced factorial(4) by its returned value which is 4 * 6 = 24 و من ذلك عزيزي.. سنلاحظ أنه لعمل أي دالة بحيث تكون recusrive function هناك شرطين أساسين 1- أن تكون هناك حالة نداء لنفس الدالة اللتي نحن بداخلها 2- أن يكون هناك شرط أو حالة لا تنادي فيها الدالة نفسها .. و خي عادة تمثل الحالة الأخيرة التي نتوقف عندها أرجو أن تكون بذلك اتضحت الفكرة العامة.. لنعد إلى برنامجك.. أنت تريد طباعة كل الكلمات الناتجة عن مجموعة من الأحرف بطول محدد.. إذن: المعطيات هي : طول الكلمة .. و الأحرف المستخدمة المخرجات : طباعة الكلمات دعنا نعرض مرة أخرى الخوارزمة اللتي كتبتها سلفا: void function printAllWords( string current, array alphabet, int maxLength) if ( strlen(current) == maxLength-1 ) then foreach character in alphabet print current+character # + mean concatenate else foreach character in alphabet printAllWords( current+character, alphabet, maxLength ) ما قمت به هنا هو إرسال الجملة اللتي وصلت إليها حتى الآن لتتم طباعتها ملحقة بالأحرف الأخيرة.. و شرط التوقف هنا هو أن تصل الجملة المراد طباعتها إلى الطول المطلوب طبعا هناك طرق عديدة لاستخدام الـrecusrsion لحل مشكلتك.. و لكن هذه إحداها أرجو أن يكون الشرح وافيا .. أعلم أنني لست كاتبا جيدا .. و لكن ان توارد إلى ذهنك أي سؤال ما عليك إلا السؤال.. و أنا حاضر دمت بود
  4. أنا على ثقة من وجود برامج تتدعم تعدد الغات على الـ Mac OS أعتقد ان المشكلة في أنني لا أعرف خطوطا تحتوي على الأحرف العربية و الإنجليزية في نفس الوقت.. مثل Arial Unicode على الويندوز.. و مازال السؤال قائما.. إذا اردت كتابة مستند يحتوي على اللغة الانجليزية و العربية .. فكيف السبيل؟ قد يكون الجواب اعدادات لم استطع ضبطها أو حزمة علي تثبيتها أو ما إلى ذلك
  5. ما رأيك لو اتبعت طريقة الـ recursion ؟ أي بدلا من أن نقوم بعمل 20 loop كل ما عليك هو أن تنادي الدالة نفسها حتى تصل إلى العمق (طول الكلمة) المطلوب.. ثم تتراجع.. مثلا .. في كل مرة تنادي الدالة ترسل لها الجملة اللتي وصلت إليها حتى الان.. و الطول الأقصى.. ثم داخل الدالة تقوم باختبار الطول.. إذا كان مساويا للعمق المطلوب تطبع الجملة ملحقة بكل الأحرف المطلوبة.. و إذا لم تصل إلى الطول المطلوب بعد.. فإنك تقوم بمناداة نفسها مرة أخرى و تقوم بإرسال الجملة ملحقة بحرف مختلف في كل مرة حتى تنتهي من مجموعة الأحرف لديك و إذا أردنا كتابة خوارزم يصف الطريقة.. void function printAllWords( string current, array alpha, int maxLen) if ( strlen(current) == maxLen-1 ) then foreach cin alpha print current+c # + mean concatenate else foreach c in alpha printAllWords( current+c, alpha, maxLen) و دعنا نقوم بعمل تجربة "نظرية" لعمل الخوارزم عندما يكون لديك الحروف المتوفرة هي 1 و 2 و 3 .. و طول الكلمة المطلوب هو 2 printAllWords( "" , [1,2,3] , 2 ) maxLen = 2 current = "" alpha=123 c = 1 printAllWords( "1" , [1,2,3] , 2 ) maxLen = 2 current = "1" alpha=123 print 11 print 12 print 13 c = 2 printAllWords( "2" , [1,2,3] , 2 ) maxLen = 2 current = "2" alpha=123 print 21 print 22 print 23 c = 3 printAllWords( "3" , [1,2,3] , 2 ) maxLen = 2 current = "3" alpha=123 print 31 print 32 print 33 أرجو أن يكون ذلك قد أعطاك فكرة لما تريد.. و دمت و دام الود بكم Techno
  6. السلام عليكم و رحمة الله و بركاته أعزائي عندما أقوم بكتابة أي نصوص عربية في Latex لا تظهر عند تحويلها إلى PDF حيث تظهر استفهامات بدلا منها.. فتظهر النتيجة كاستفهامات فقط كما إذا وضعت نصا انجليزيا فانه يظهر بحروف عربية ؟؟؟!!! هل من مقترحات لحل المشكلة.. علما أنني مبتدئ في لغة الlatex و احتاج قليلا من الصبر؟ مثال.. \documentclass{article} \usepackage{arabtex} \usepackage{utf8} \setcode{utf8} \setarab \begin{document} \begin{RLtext} نص عربي \centerline{نص عربي بالمنتصف} \end{RLtext} \end{document}
  7. فعلا يعتبر MathType محرر ممتاز للمعادلات.. ما أبحث عنه هو محرر LaTex مثل MikeTex و Lyx و TexShop و غيرها و لكن تدعم اللغة العربية و الاتجليزية في نفس المستند من المفترض أن Lyx يدعم ذلك و لكنني حاولت مرارا اتباع التعليمات في Lyx و لكن في كل مرة تبوء بالفشل حيث تظهر النصوص الانجليزية صحيحة أما العربية فتظهر كاستفهامات شكرا عزيزي OricalcosZy على ردك و اهتمامك  
  8. عزيزي محمد.. أعتقد أن من الحلول الممكنة لبرنامجك هو استخدام الـ tree يحيث يكون عمق الشجرة هو طول الجملة.. و عدد الأحرف أو المجال هو عدد التفرعات من كل عنصر.. فمثلاً: لو كان لدي فقط 3 أحرف و هي 1 و 2 و 3.. و كان الطول المطلوب هو 2.. إذا.. start ---------- 1 ---------- 1 | |---- 2 | |---- 3 | |-- 2 ---------- 1 | |---- 2 | |---- 3 | |-- 3 ---------- 1 |---- 2 |---- 3 و بالمرور على كل الفروع بالشجرة نحصل على كل الاحتمالات المطلوبة و لو كان طول الكلمة هو 3 .. فسيكون هناك 3 فروع من كل نهاية.. و هكذا أتمنى أن يكون ذلك مفيدا.. و دمتم و دام الود بكم Techno
  9. السلام عليكم و رحمة الله و بركاته أعزائي.. كما يصف العنوان فإنني أستخدم نظام تشغيل Max OS X و اريد أن أقوم بكتابة أبحاثي و تقاريري باستخدام LaTex لقد كنت أعتمد سابقا على MikTex إلا انه لا يدعم الMac و ما أريده هو كتابة تقارير مزدوجة اللغة (عربي / انجليزي) في نفس المستند.. حاولت كثيرا استخدام و القيام باعدادات Lyx و محاولة تثبيت ArabTex و لكن لا جدوى و أنا أحتاج إلى كتابة هذه القارير و ليس لدي جهاز ويندوز و أنا في حيرة من أمري.. فأرجو المساعدة.. و دمتم و دام الود بكم Techno