• الإعلانات

    • فيصل الحربي

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

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

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

Showing results for tags 'Quiz'.

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

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

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

  1. بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته : في استكمالنا موضوع البحث عن أكبر عدد أولي .. فقد وصلنا إلى فقرة اختبار أولية الرقم الذي وصلنا إليه .. كملخص لما وصلنا إليه سابقاً : مقدمة الموضوع الخطوة الأولى ولمعرفة المزيد عن موضوع الأعداد الأولية : Mersenne Largets Known Prime أما بعد : فخطوات الوصول كانت : 1- الوصول إلى أكبر رقم معروف حتى الآن وهو 2^43112609 -1 وذلك بطريقتين : الأولى هي عن طريق البرمجة والثانية عن طريق الرابط التالي : أكبر رقم أولي (الرابط موجود في الصفحة لأن الرقم حجمه 13 ميغا) 2-الانطلاق من هذا الرقم إلى 2^ الرقم الأولي التالي ل 43112609 وهو 43112621 (عملية بسيطة ) 3-اختبار الرقم الذي وصلنا إليه هل هو أولي ؟ ( وهو موضوعنا اليوم )   من الخطوات الثلاث المذكورة .. الخطوة التي تمثل التحدي الحقيقي هي قابلية القسمة ... وكمقدمة بسيطة : عملية القسمة ( أو النسبة ) هي عملية تهدف لمعرفة عدد مرات احتواء المقام في البسط .. أي أنه لدينا مقسوم ومقسوم عليه .. وهدف القسمة هو معرفة عدد مرات احتواء المقسوم عليه في المقسوم ... وعندما يكون عدد مرات الاحتواء هو عدد صحيح نقول أن العدد يقبل القسمة على المقسوم عليه .. ويمكننا على هذا الأساس أن نستعيض عن قابلية القسمة بالطرح عدد من المرات وعندما نصل إلى رقم منازله هي نفس منازل المقسوم عليه وهو أصغر من المقسوم عليه ولا يساوي الصفر نقول أن العدد لا يقبل القسمة على المقسوم عليه ... هذه مقدمة للموضوع أرجو أن ... يكون ذلك كافياً حتى الآن ... للموضوع تتمة بإذن الله تعالى والسلام عليكم ورحمة الله وبركاته
  2. السلام عليكم     مشكل جميل .     .له علاقة بطباعة الأشكال الهندسية ..       أرجوا من الاخوة أن يجربوا طباعة هذه الأشكال الأربعة   باستعمال الرمز ( * ).   بالتوفيق لاخوة الكرام .         السلام عليكم
  3. هناك شخصان فقط في المنتدى يمكنهما فهم السبب , أحد أكثر الأمور إرباكاً في اللغة, شيء لا يمكنك تخيله , من الفضاء أو من عالم آخر . لو كان الكود طويلاً لتردد البعض في قراءته , ولكن ماذا عن cout<<"??!";أو في الـ C puts("??!");هل تتوقع أنك ستحصل على أسوأ كابوس لليوم ؟ اكتب توقعك ثم جرب الكود :)   بالتوفيق
  4. a+5 - a != 5

    السلام عليكم ورحمة الله وبركاته لدي متغير اسمه mv وله نوع ما , قمت بكتابة الكود التالي : cout<<int(mv+5)-int(mv);وهو يطبع العدد 40 , وفق قواعد اللغة الصحيحة المعرفة بشكل جيد . فهل يمكنك معرفة السبب ؟  
  5. السلام عليكم ورحمة الله ويركاته وكل عام وأنتم بخير أثناء إحدى التجارب الخطيرة على std::map ظهرت مشكلة غريبة جداً جداً .. بالفعل . وبعد أن عرفت سبب المشكلة (وهي في لب أساسيات فهم الـ map ) وجدت أنه سؤال جيد ليطرح كاختبار إليكم الكود : بعد تعريف المكتبات اللازمة , واستخدام نطاق الأسماء المعياري : #include <iostream>#include <map>using namespace std;قمت بتعريف هيكل struct كما يلي struct rect{    int a_x,a_y,b_x,b_y;    rect(int a,int b,int c,int d){        a_x=min(a,c);a_y=min(b,d);        b_x=max(a,c);b_y=max(b,d);    }};وسأستخدمه كمفتاح key بداخل الـmap لاحقاً .. ولذلك قمت بتعريف العملية > لأن الـmapه لا تعرف كيف تقارن هذا النوع الجديد عند تريبه (حيث يتم تنفيذها كـbalanced tree ) المهم , التعريف هو كما يلي : bool operator<(const rect &y,const rect &x){        if(y.a_x>x.a_x)            return false;        else if(y.a_y>x.a_x)            return false;        return true;    }أخيراً عرفت الـmap map<rect,int> my_map;والآن إلى السؤال , الدالة الرئيسية main بداخلها الكود التالي : int main(){    for(int i=0;i<3;i++)        for(int j=0;j<3;j++)            {                my_map[rect(i,j,i,j)]=i*j;                cout<<( my_map.find(rect(i,j,i,j))==my_map.end() ?"VERY BAD":"GOOD")<<endl;            }    return 0;}بداخل الحلقتين , يتم إدخال عنصر جديد في الـmap مفتاحه هو كائن جديد من rect , ويتم إسناد القيمة value إلى هذا المفتاح key بطريقة عشوائية ( اخترت i*j للسهولة ) في سطر الإخراج الوحيد بعد ذلك , أطلب من الـ map البحث عن العنصر الذي أدخلته للتو , ((للتو يا جماعة )) والمفترض أن تكون النتيجة 100% تم العذور على العنصر . ولكن للمصادفة , بعض العناصر تعثر عليها والآخر يضيع !! وبالتالي ترى الخرج بين Good و Very Bad ! فكيف يمكن لهذا أن يحدث ؟ (ملاحظة : لحل السؤال تحتاج لمعرفة جيدة في أساسيات ومبادئ عمل الـ map ولتفسير الخرج عليك فهم الـ implementation الخاص بها كـ tree )   بالتوفيق للجميع   أخيراً وكعادة أرجو من كل من يريد وضع الأسئلة والألغاز أن يتبعها , سأضع إجابة هذا السؤال مشفرة بطريقة ما , لإزالة أي شبهة حول عدم معرفتي للجواب بصفتي واضع السؤال , دقلةظقلذققرنةظغيرظصقلحةظللقستخدقذظفهيظأولقظلقظتشذلظجذيعظقلحقلقتظوثقنيقًظلقظتحققظقوقنينظقلذققرنةظذثلظأنظيكونظذقظليسظأصغرظولقظأكبرظفهوظيسقويظوذقظإلىظذلكظو قلحلظيكونظبشذلظجذيعظحقلقتظقلذققرنةظأوظعلىظقلأقلظعدذظإعطقءظقلتنققضظ:ظذقظليسظأكبرظولقظأصغرظفيذكنظأنظيكونظلقظيسقويظأيضقًظوهذقظقلقبيل
  6. السلام عليكم ورحمةالله وبركاته      احبابي الكرام   تعرفت على المنتدى أثناء جولاني في عالم الأنترنت بحثاً عن طريقة للتحكم بالمتغيرات    منتدى أكثر من رائع وأتمنى أن موضوعي في المكان المناسب وأن القى اجابة    السؤال :   كيف استطيع اتحكم في المتغيرات من جانب عدد الحروف او الارقام الذي ممكن أنها تأخذها بحيث أن الادخال ينتقل للمتغير التالي عند انتهاء الأول تلقائياً دون انتر وإذا انتهت كل المتغيرات المطلوب ادخالها يتوقف الكيبورد عن كتابة حروف وارقام أخرى
  7. السلام عليكم ورحمة الله وبركاته   اخواني الكرام سأقدم لكم تمرين ليس صعبا بمعنى الكلمة .. بل يتطلب بعض الذكاء..   أقصد ذكاءك ... وليس ذكاء غيرك .. :angry:   أرجوا ان يحاول كل شخص في حله هذا التمرين لوحده دون الاستعانة باي مرجع ...   عسى أن نبني قاعدة متينة ;)  ... وفقني الله واياكم ...     التمرين .... يقوم المستخدم بملء جدولين x و y  باي قيم يشاء .. لتسهيل عملية الادخال كل جدول يحمل 10 عناصر ..   ثم تقوم بطباعة قيمتين   القيمة الاولى : وثمتل عدد العناصر المشترك بين الجدولين ( هي N)   أما القيمة الثانية هي Ncc)   فستكون عدد الخانات ( خانات الجدول) التي تحمل نفس العناصر المشتركة بين الجدولين x و y.   سأضع بعض الأمثلة  لنقرب الصورة أكثر                             ملاحظة...!!!!!   الحل يكون بلغة السي   +   محتوى الكود ارجوا ان يكون بسيطا فهو لا يستحق الا حلقة تكرارية وأداة الشرط ....فقط.. :excl: :excl: :excl:       والسلام عليكم ورحمة الله وبركاته
  8. اخواني الكرام  السلام عليكم  ورحمة الله وبركاته     التمرين  : يقوم المستخدم بادخال عددين  x وp شرط أن يكون   العدد x موجب تمام وأكبر من الواحد    ( x>1).   والعدد p محصور بين 500 و2000.     x يمثل عدد القواسم فمثلا   x=5;وp=650     نبحث عن جميع الاعداد المحصورة بين العدد 2 الى غاية العدد 650 والتي عدد قواسمها يساوي 5 .. :wacko:     اتمنى أن أرى محاولاتكم... ;)   والسلام عليكم ورحة الله وبركاته :D    
  9. السلام عليكم .   . :D ..أحواني سأقدم لكم تمرين أخذ من بعض الوقت تمرين بسيط جدا :P ....   المشكل يقول ... برنامج يامر المستخدم بادخال قيمتين  مثلا   a = 36 ;b = -78     ثم يقوم البرنامج بقلب القيمتين   هكذا... :rolleyes:   b = 36 ;a = -78     .. لكن يمنع :ph34r: اضافة متغير أو دوال مساعدة ...أو التلاعب بprintf. :ph34r: ..     :huh: :mellow: حظ موفق :o B)
  10. السلام عليكم إخوتي الكرام طرحت منذ فترة تحديا بسيطاً... ولكن يبدو أنه كان مبهماً لدرجة كافية لأن لا يحله أحد ... كما أنه كان بعيداً بشكل كافٍ عن مواضيع القسم .. وتوجهه .. ولذلك قررت ما يلي : حسناً سأغير صيغة السؤال ..عسى أن يحل المسألة أحد ... اكتب برنامجاً ... يطبع عبارة ARAB TEAM 2012 وذلك باستخدام ما يلي : مكتبة الدخل والخرج القياسية : #include<cstdio>مصفوفة أعداد صحيحة : int array[30000]={0};مؤشر يؤشر على بداية المصفوفة .. int*ptr=&array[0];ويسمح لك باستخدام التعليمات التالية .. حصراً وفقط ولا غير :: ++*ptr;--*ptr;++ptr;--ptr;*ptr=getchar();putchar(*ptr);while(*ptr){}والآن كل ما عليك هو استخدام كامل مهاراتك التفكيرية .. لحل المعضلة السابقة .. وذلك باستخدام 150 تعليمة كحد أقصى ...(حيث كل سطر في المجموعة السابقة يعتبر تعليمة واحدة ...) بالتوفيق في تحريك الدماغ ... تحياتي
  11. السلام عليكم يبدو أن القسم نائم هذه الأيام, لذا بحثتُ البارحة في بقية الأقسام لعلي أجد سؤالا أو فكرة تستحق النقاش لأضعها هنا و بالتالي يستيقظ الأعضاء من هذا السبات العميق :D فكرة السؤال الذي عثرتُ عليه جميلة جدا و هي إيجاد جميع الإحتمالات (و ليس عدد الإحتمالات) للأحرف و الأرقام الموجودة بين 000000000000 وحتى FFFFFFFFFFFF (الأحرف و الأرقام المُستخدمة هي تلك المُكونة لقاعدة الــ Hex). لمعرفة التفاصيل : موضوع السؤال الأصلي. تجدون في المشاركة الأخيرة مقدمة بسيطة للفكرة (إظهار جميع الإحتمالات الممكنة لــ ABCDEF, يوجد 46656 احتمال), و هذا الكود : #include <stdio.h>#include <math.h>#include <stdlib.h>int main() { int i, j, n = 6, p = 6; char *Vect; char **Liste; FILE * File; Vect = (char *) malloc(n * sizeof (char)); Vect = "ABCDEF"; Liste = (char **) malloc((int) pow((double) n, (double) p) * sizeof (char *)); for (i = 0; i < (int) pow((double) n, (double) p); i++) { Liste[i] = (char *) malloc(p * sizeof (char)); } File = fopen("RandomFile.txt", "w"); for (i = 0; i < (int) pow((double) n, (double) p); i++) { for (j = 0; j < p; j++) { Liste[i][j] = Vect[(i / (int) pow((double) n, (double) (p - (j + 1)))) % n]; fprintf(File, "%c", Liste[i][j]); } fprintf(File, "%s", "\n"); } free(Vect); for (i = 0; i < (int) pow(n, p); i++) { free(Liste[i]); } free(Liste); return 0;}سأضع حل السؤال بعد الإنتهاء من نقاش الفكرة إن شاء الله. بانتظار إبداعاتكم.
  12. حزورة لتنشيط الدماغ..

    بسم الله الرحمن الرحيم منذ فترة خطرت على بالي فكرة .. أتت من باب التسلية لا غير .. وهي .. من أين يبدأ البرنامج عمله ... الإجابة المفترضة هي : من التابع main والحزورة اليوم هي : إذا كانت الدالة main كما يلي : int main(){ return 0;}فقط لا أكثر ولا أقل ... ولا يحق لك تغيير هذه الدالة أبداً .. او إضافة أو إزالة أي حرف أو رمز ... ويمكنك كتابة ما تشاء خارج هذه الدالة ... ويمكن للبرنامج أن يقوم بأي عمل تريد ... وفي سؤالنا اليوم .. لن نتجاوز كتابة Welcome to C++ I... هل السؤال واضح ... اكتب برنامجا يقوم بطباعة العبارة Welcome to C++ I... وذلك دون أي تغيير في الدالة main والتي ستكون كما يلي : int main(){ return 0;}السؤال بسيط جدا ... تحتاج فقط إلى أن يكون قد مرّ عليك من قبل ... أنتظر إجاباتكم والسلام عليكم      
  13. في كل يوم فائدة !

    السلام عليكم و رحمة الله و بركاته منذ زمـــــــن و أنا أفكر في الطريقة الأفضل لجمع كنز معلوماتي برمجي قيم, فقد قمت سابقا بطرح مسابقة للألغاز في السي و السي++ و لكن لم يكن بإمكان الجميع المشاركة لذلك فكرت اليوم بطرح هذا الموضوع الذي هو عبارة عن فائدة في كل يوم, الفوائد التي سأطرحها سيكون أغلبها بالفرنسية و بعضها سيكون بالعربية كما يمكن لأي عضو أن يطرح فائدة برمجية بأي لغة أراد. بالتوفيق.
  14. برأيك, ما هي قيمة n !؟

    السلام عليكم و رحمة الله و بركاته كلنا يعرف أهمية الـ bitwize في حياتنا البرمجية, لذلك قمت بطرح هذا السؤال البسيط جدا, لكي يتمرن القارئ على التعامل مع هذه المخلوقات العجيبة .. أقصد الـ bitwize إليك المثال : int n=0;int m=1<<8;int x=8+2;while(m){n+=x&m;m=m>>1;} تُرى, ما هي قيمة n في نهاية الكود ؟, برر إجابتك :wink: بالتوفيق.
  15. بسم الله الرحمن الرحيم السلام عليكم خطرت لي فكرة وهي إننا ننزل لغز برمجي .. بحيث إننا نشغل أمخاخنا في أوقات الفراغ لكي لا تصدأ أنا سوف أضع سؤال .. وكل واحد لازم يكون له طريقة في الحل ... لاتضحك على نفسك وتشوف حلول الأعضاء لازم تحلها بطريقتك وبعد ماتحل السؤال تقدر تشوف حلول الأخرين عشان تستفيد وتفيد .. وخلونا في إطار الC أفضل .. س:اكتب برنامج يقوم بإيجاد مجموع أعداد صحيحة مدخلة من المستخدم,حيث يمثل العدد الأول المدخل الأعدادالمراد إدخالها.يجب أن يقوم البرنامج بقراءة قيمة واحدة في كل مرة يتم فيها تنفيذ جملة scanf . مثال: 2 12 12the total is: 24وهكذا.. في غضون 10 حلول راح أضع ... سؤال غيره أو أنتم تضعونه .. << والأفضل إنتم تحيتي لكم .. وهذا هو حلي << لاحد يغش :D #include <stdio.h>int main(){ int i=0; int count=0; int total=0; int num[256]; printf("Enter The Total Number:\n"); scanf("%d",&i); for(count=1;count<=i;count++) { printf("Enter number %d :\n",count); scanf("%d",&num[count]); total+=num[count]; } printf("Total is:%d.\n",total); return 0;}ننتظر حلول أخرى ,,,
  16. شغل مخك

    تم نقل الاسئلة انا بدوري ساضع مجموعة من الاسئلة من هذا النوع: 1-كيف تستطيع ان تعرف اذا كان العدد من النوع (2 اس ن) -1 2-تحديد اول بت من اليمين الذي يحتوي على واحد مثال 01011000 ==> 00001000 في حالة عدم وجوده نعيد صفرا 3-نضع اول بت من اليمين يحتوي على صفر 10100111 ==> 00001000 في حالة عدم وجوده نعيد صفرا 4-تصفير اول مجموعة من الواحدات المتتالية الواقعة في اقصى اليمين 01011000 => 01000000 الحل في سطر واحد لكل سؤال
  17. خواطر في ++C/C

    كثيرا ما يخطر على بالي سؤال أو فكرة أحيانا تكون بسيطة وأحيانا تكون معقدة ولكن في كل الأحوال تكون مسلية ومفيدة لهذا فكرت في طرح أي شاردة تأتيني في البرمجة خاصة مع لغتي المفضلة السي :) والمفهوم الجديد علي oop وما تقدمه له السي++ نبدا بسؤال بسيط في كيفية كتابة الجمل الشرطية أو الجمل التكرارية مثلا والتي تحتوي على أكثر من جملة مثال: for(int i = 0; i < 10; i++) {  statment_1;  statment_2;  ........  ........  statment_n;}من معلوماتك حول الجملة for, هل يمكنك إعادة كتابة الجملة مره أخرى بالاستغناء عن { } سؤال آخر: ما الفرق بين: for(int i = 0; i < 10; i++)  statment;و for(int i = 0; i < 10; ++i)  statment;ولماذا ؟ سؤال أخير هذه المرة: ما الفرق بين: if(condition_1)  if(condition_2)    statment;وبين if(condition_1 && condition_2)  statment;دي البداية الى أن اتذكر بعض الفكاهات في السي و بعض علامات الاستفهام في السي++
  18. أتمنى ما يكون متكرر وهو : نريد كتابة دالة تنسخ stack of integers إلى stack أخرى بحيث لا يمكن تعريف أي متغير في الدالة غير هذه المتغيرات وهي : 3 أعداد صحيحة (فقط) مثال stack1: 1 6 8 4 5stack2: emptyafter the function that take the two stacks as a parameter  (you can use in the function only three integers) stack1: 1 6 8 4 5stack2: 1 6 8 4 5ملاحظة : رأس الدالة pop بالشكل التالي: int pop()
  19. ظهر لي أحد الأشخاص لا يدعم القياسية في السي++ فقط بل يتنفسها, يهواها, يفديها بحياته :D , كلما كتبت كود سي ولو سطر واحد ينتج أنه غير مطابق للمواصفات القياسية بينما يطرح هذا الشخص الكود الذي يظهر على الأقل 6 اسطر أخطاء في المترجم مقابل سطر واحد في الكود :lol: , وفي النهايه أكتشف أنه مطابق للمواصفات القياسية التي لا أعلم عنها شيء انظر معي : #include <iostream>using namespace std;int main(int argc, char* argv[]) {int n;cin >> n;int array1[n][n];return 0;}هل لديك اعتراض على هذا الكود ؟؟ دقق النظر في السطر السادس ها, ماذا تقول ؟؟ هل يعمل هذا الكود ؟؟ أم انك معترض عليه لأن المترجم يحتاج قيمه محدده ليحجز على أساسها مساحة المصفوفة ؟ اذا كنت معترض (مثلي طبعا ) , مبروك أنت خطأ :D , مثلي ايضاً طيب وما الدليل على اننا اخطأنا , تقول لي نجرب والميه تكدب الغطاس !!! نسأل صاحبنا القياسي فيقول هات مترجم جديد , مثلا مترجم ميكروسوفت الجديد , نقوله ماشي احدث حاجه عندنا VC++ 8 في VS 2005 أظن أحدث حاجه على الإطلاق , جرب..... 1>.\Main.cpp(6) : error C2057: expected constant expression1>.\Main.cpp(6) : error C2466: cannot allocate an array of constant size 01>.\Main.cpp(6) : error C2057: expected constant expression1>.\Main.cpp(6) : error C2466: cannot allocate an array of constant size 01>.\Main.cpp(6) : error C2087: 'array1' : missing subscript1>.\Main.cpp(6) : error C2133: 'array1' : unknown sizeمش قلتلك غلط , هات الحلاوه وما تتكلمش معايا تاني يا عم القياسي :lol: يرد عم القياسي يقولي لا الكود صح والمترجم هو الغلط :angry: :blink: , انت بتقول ايه ؟ , أحدث اصدار غلط , نشوف طيب اللي قبلها , لا دي نفس النتيجه , عموما مش ميكروسوفت بس هي اللي بتعطي نفس النتيجه قاللي ده شغال على Dev جربت الكود عليه (لأول مره اتعامل معاه) , قبل الكود واشتغل تمام , عجيبه <_< طيب ليه ؟ رده كان جميل جدا , المترجم ده بينصاع لـ ANSI/ISO C99 طيب تعالوا نشوف النقطه دي كمان : int *p;p = new int[1000];if(p == NULL) {  cout << "Error ...." << endl;  return -1;}ها رأيك ايه في الكود ده ؟؟ على فكره انا اللي كاتبه , نصيحه توقع انه غلط :P لسه مصر انه صح ؟؟ طيب اسمعها منه " this code has a logical problem " , ايه رأيك ؟؟ طيب تعرف ايه المشكلة ولا عرفتها من نفسك ؟؟ المشكله في اختبار اذا كان p تساوي NULL ولا لأ وبناء عليها هل اكمل البرنامج ام أخرج منه رد الراجل ان new مش حترجع NULL في حالة الفشل ولكن سوف تمرر exception وهو bad_alloc , لهذا فإن البرنامج لن يعلم بحالة الفشل مما يؤدي الى تعطل البرنامج نفسه طيب , انا عن نفسي مش جايب الكلام ده من بيتنا ده موجود في كل مكان ميكروسوفت بتقول كده , الأمثله دي مش أنا اللي كاتبها لكن على مين , ده صاحبنا قياسي وماشي زي ما المنظمه ما بتقول بالضبط طلع ان العالم دي كلها متخلفة لأنهم شغالين على النظام القديم ومفيش تطوير ولا توافق و تنفيذ لقرارات ANSI/ISO الجديدة أخيرا اكتشفت الحقيقة المؤلمة , الراجل طلع كلامه صح Are you Ready For C99? أخيرا , ودي ماتكلمتش فيها لا بابيض ولا اسود , void main()تعتبر جريمة من جرائم الحرب, استعمل int main()خليك راجل قياسي :D الى اللقاء مع موقف جديد مع صاحبنا القياسي
  20. بسم الله الرحمن الرحيم اولا ابدء بتحية الاسلام سلام عليكم ورحمة الله وبركات يا جماعة كيف احول من صورة infix الي صورة postfix انا بصراح حاولة ولكن ما عندي اي معلومة عن كيفية التحويل وارجوا من ذوي الخبر ان لايبخل علي و جزاكم الله خيرا . وسوف ادعي لمن يساعدني.
  21. Multithread

    بسم الله الرحمن الرحيم بصراحة لا اعلم افضل طريقة للشرح في منتدى به الاف من الاعضاء اكتب الكود و اعلق ام ماذا ... ليتكم تساعدوني بالاسئلة - داخل اطار البرنامج - الـMutlithread امر مهم جدا احيانا يكون الكمبيوتر مشغول بالقراءة من الكيبورد او التعامل مع الشاشة او كارت الشبكات فبدلا من تنفيذ البرنامج بطريقة تسلسلية من الممكن ان تصممه بالعمل كعدة اجزاء thread يعني خيط !!! المهم البرنامج يكون بعدة انفاس او ارواح من الممكن ان تنفذ بدون تسلسلية البرنامج ليس مثالي و كتب بعرض تعليمي و من الممكن اجراء الكثير من التعديلات!!! همي الاول السهولة و البساطة اليكم الكود و ندير حلقة نقاشية تعليمية حوله ما رأيكم دام فضلكم - يا ترى الشاى على مين   // dos2.cpp : A good example of MultiThread Program with emphasis of pointer.////#include "stdafx.h"//#include <stdlib.h>#include <stdio.h>#include <process.h>#define ddum(a,b) a+bint addem(int);int factoria(int);int AddThree(int list[]);int DataAdd(int *list);int StrPrint(char *str);int side=4;int main(int argc, char* argv[]){// int arr[2];arr[1]=4;arr[2]=5;// float *ptr_y,yy[2]={3.0,9.2};int id1,id2,id3,id4,id5;int list[]={3,5,19},kll[]={8,1,2,3,4,5,6,7};int (*ptr)(char *str);char str[] = "*** Pointing to a function.";ptr = StrPrint;printf(" --** Hello World! **--\n");id1=_beginthread((void (*)(void *))addem, 0, (void *)4);id2=_beginthread((void (*)(void *))factoria, 0, (void *)4);id3=_beginthread((void (*)(void *))AddThree, 0, (void *) list);id4=_beginthread((void (*)(void *))DataAdd, 0, (void *) kll);id5=_beginthread((void (*)(void *))ptr, 0, (void *) str);addem(20);(*ptr)(str);if ((*ptr)(str)) printf("Done!\n");/* printf("Sum of %d and %d is %d",arr[1],arr[2],ddum(arr[1],arr[2]));printf("\npid1 = %d, pid2 = %d, pid3 = %d\n\n",id1,id2,id3);ptr_y = &yy[0];printf("ptr_y: address=0x%p, content=0x%p\n", &ptr_y, ptr_y);printf("*ptr_y +7 => %5.2f.......*(ptr_y + 1) => %5.2f\n", *ptr_y +7,*(ptr_y+1));printf("%f ..... %f\n\n",yy[0],yy[1]);AddThree(list);DataAdd(kll);*/ return 0;}int addem(int count){int i, sum;sum = 0;for (i=0; i<=count; ++i) {printf("I The value of I is %d\n", i);fflush(stdout);sum += i;}printf("I *** The sum is %d\n", sum);fflush(stdout);return 0;}int factoria(int don){int j, mul;mul=1;for(j=1;j<=don;j++) {printf("II The value of II is %d\n", j);fflush(stdout);mul *= j;}printf("II *** The mul is %d\n", mul);fflush(stdout);return 0;}int AddThree(int list[]){int i;int result =0;for (i=0; i<3; i++){printf("III The Value of III is %d\n",i);result += list[i];}printf("III *** The sum of the three integers is: %d\n", result);return 0;}int DataAdd(int *listt){int i;int sum =0,max=listt[0];// printf("max is %d\n",max);for (i=1; i<max; i++){printf("IVV The Value of IVV is %d\n",i);sum += listt[i];}printf("IVV *** The Sum is %d\n",sum);return 0;}int StrPrint(char *str){printf("%s\n", str);return 1;} الـOutput و بالطبع يختلف من جهاز بل على نفس الجهاز يختلف من ظرف لاخر C'est la Multithread   --** Hello World! **--I The value of I is 0I The value of I is 0II The value of II is 1III The Value of III is 0IVV The Value of IVV is 1*** Pointing to a function.IVV The Value of IVV is 2IVV The Value of IVV is 3IVV The Value of IVV is 4IVV The Value of IVV is 5IVV The Value of IVV is 6IVV The Value of IVV is 7IVV *** The Sum is 28III The Value of III is 1I The value of I is 1I The value of I is 2I The value of I is 3I The value of I is 4I The value of I is 5I The value of I is 6I The value of I is 7I The value of I is 8I The value of I is 1II The value of II is 2III The Value of III is 2III *** The sum of the three integers is: 27II The value of II is 3II The value of II is 4II *** The mul is 24I The value of I is 2I The value of I is 3I The value of I is 4I *** The sum is 10I The value of I is 9I The value of I is 10I The value of I is 11I The value of I is 12I The value of I is 13I The value of I is 14I The value of I is 15I The value of I is 16I The value of I is 17I The value of I is 18I The value of I is 19I The value of I is 20I *** The sum is 210*** Pointing to a function.*** Pointing to a function.Done! و الان اتركه لكم ثم نرجع له لما يشاء المناقشة
  22. السلام عليكم اريد معلومات عن Process Environment Block PEB . اريد التعريف الكامل لهذا التركيب . التركيب يحوي العديد من المعلومات عن الـ Process مثل ListDlls وغيرها .. لدي بعض المعلومات عن التركيب السابق ولكنها ليست كامله , كما اني ما زلت في مرحله البحث في الموضوع. اتمنى ممن له معلومات في الموضوع الا يبخل باعطاء ما لديه . CIONO1
  23. السلام عليكم .. عندما ارى كتاب انقليزي ( بلاش عربي عشان مايزعل علينا احد ) يشرح mfc ... تجده يبدأ .. باول تطبيق وهو نافذة .. لكن كيف ينئ هذه النافذة . عن طريق .. المعالج .. mfc appwizard انتبه واحذر من تلك .. الترهات .. .. فانت مثل الجبل الذي اهتز وخرجت منه فأرة . :P تولد اكواد .. ويصل عدد اسطرها للمئات .. والنتيجة لو اردت تعدل عنوان النافذة ... تجلس تدور وسط كومة القما .. عفوا ... الاكواد .. عشان تدور على سطر يعدل لك .. اي مشروع .. mfc dx gl جن .. تعلمها مباشرة بدون معالج .. لانها وكما قال تركي العسيري في احد مواضيعه ... طريقة فاشلة في التعلم . لكن مع هذا ترى الكتب ( العربية والانقليزية التجارية تبدأ بها ) على فكرة ... vb فيه معالج (يولد لك نافذة وعليها ازرار .... بضغطة زر ...) لايوجد اي شخص تعلم vb من خلال ذلك wizard ... لانه ليس كسول لهذه الدرجة .. فلماذا اهل السي لايحذون حذو اهل الفيبي هذه المرة .. : ) زهقنا من wizard .. ومن صورة الرجل العجوز .. الذي يظهر بجانب ذلك المعالج . . . . . . . .. . . . .
  24. ياشباب انا لما بحب اعمل برنامج من مترجم على الدوس فان حجم البيانات الموجودة داخل المتغير من النوع int يكون 16 بت هل من الممكن ان اجد دالة يمكننى من خلالها اجعل المتغير int يحجز لى متغير سعته 32 بت حتى لو كان المترجم يعمل على الدوس وسوال كمان : كيف عند بناء اى مترجم يتم تحديد مساحة من الذاكرة لكل نوع من انوع المتغيرات يعنى int يكون 16 بت والمتغير char يكون 8 بت كيف اصمم هذه الطريقة اى عندما ابنى مترجم او مفسر لاى لغة كيف اتحكم انا فى سعة المتغير الذى يتم حجزه وشكرا
  25. بسم الله الرحمن الرحيم ----------------------------------------------------------------------------------------------------- طرحت هذا الموضوع لوضع الاخطاء الشائعة في البرمجة بلغة ++C فأرجو من الاعضاء وضع كل خطأ شائع في البرمجة بلغة ++C لكي يفيدونني ويفيدو أعضاء غيري ----------------------------------------------------------------------------------------------------- (1) الخطاء الشائع في ترك الفاصلة المنقوطة {;} :- يعتبر الخطأ الشائع في الفاصلة المنقوطة {;} من الاخطاء الكثيرة التي يقع فيها المبرمجون فأحرص يأيها المبرمج وضعها في أخر العبارات وإلا فستحضى بخطئ من المترجم (2) الخطاء الشائع في ترك مقفعة الفتح والاغلاق (فتح } ) (إغلاق { ) :- يعتبر الخطأ الشائع في مقفعة الفتح والإغلاق من الاخطاء الشائعة ويجب عند كتابة مقفعة الفتح أن تكتب مقفعة الاغلاق وإلا ستحصل على خطئ من المترجم وغيرها من الاخطاء الشائعة فأرجو من يعرف أي خطئ شائع أن يضعة في المشاركة :D