• 0
mamrya

اريد كود يحدد حجم المصفوفة

سؤال

اخواني الاعضاء اني اواجه مشكلة وهي في تحديد مصفوفة في برنامج متعدد الدوال حيث اريد المستخدم يحدد حجم المصفوفة ولم استطع تنفيد هذا الامر

ولم استطع ايظا ان استخدم المصفوفة في جميع الدوال لان السكوب لا يسمح بدلك

الرجاء اسعافي بكود يجعل المستخدم يحدد حجم للمصفوفة وان تكون معرفة في جميع الدوال

وشكرا لكم

:) :) :) :) :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

21 إجابة على هذا السؤال .

  • 0

بسيطة تحديد حجم المصفوفة بواسطـة المؤشرات ؛ أنظر إلى هذا المثال

int *pArray;
int N;
cin >> N;
pArray= new int [N];

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بالنسبة لأمر تمرير المصفوفة إلى الدوال .... فلماذا لا تريح نفسك وتجعلها متغير عام global

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

و ما المشلكة في تمرير الarray الى الfunctions فهو أكثر تنظيماً

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أكثر تنظيماً صحيح ولكن أكثر تعقيد (أتكلم هـنا عـن المشاريع الصغيرة جداً) ... وأنا لا أعتقد أن الأخ السائل سيقوم بكتابة Real Player وإن كنا نتمنى أن يكون أحد أعضاء المنتدى ضمن فريق يعملون مثل ذلك البرنامج

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يجب التعود على التنظيم حتى في المشاريع الصغيرة, و كما يقولون, من شب على شيء شاب عليه, و هذا ينطبق على البرمجة.

المشكلة تكمن في ان المصفوفات في السي لا تحتوي على معلومات تخبرك بحجمها, و عندما ترسلها الى الـ functions اخرى فإنك لا ترسل سوى مؤشر pointer لأول عنصر فيها.

بإمكانك استخدام std::vector (مع اني شخصيا لا احبه)

http://www.codeguru.com/Cpp/Cpp/cpp_mfc/st...ticle.php/c4027

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أخي hasan_aljudy:

حتى في لغات البرمجـة الهيكلية من الممكن أن يكون لديك متغيرات عامـة وإن كان أمرها خطيراً فعلاً ..... نرى أن السائل يتحدث عـن أن هذه المصفوفة هي أساس البرنامج (وأن البرنامج كله ما كُتب إلا لأجلها ) لماذا إذاً لا يكون بإمكانـه جعل تلك المصفوفة متغير عام (هي فقط وليس غيرها) أنا لا أقول أن يجعل جميع المتغيرات عامـة ولكن فقط هذه المصفوفة لأن جميع الدوال ستستخدمها وهذا لن ينافي التنظيم أخي hasan ..

نصيحتي للأخ mamrya إن لم تعـجبه المكتبة vector أن يقوم بكتابة كلاس (قريب من النمط) يحل جميع مشاكل المصفوفات في لغة السي والسي بلس بلس وإن كان هذا يناقض أهـم نصيحـة للبرمجـة الشيئية : لا تعيد كتابة شيفرة موجودة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أرسل طول المصفوفة الى الـfunction .........مثلا

void printall(int array[], int length) {
    if(length < 0)
         return;
    for(int i = 0; i < length; i++)
         cout << array[i] << endl;    
}

و أذا دمجناه مع مثال الأخ سلطان .....فأستدعائه يكون

printall(pArray, N);

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

المتغيرات العامة global مشكلتها ليست فقط في التنظيم, و أنما المشكلة الأكبر بنظري هي في أعادة أستعمال نفس الكود بدل كتابته من جديد أو عمل تغييرات فيه.

لو كان عندك function يسوي حاجة معينة, و أحتاجيته بعد فترة. أذا كنت معتمد على متغيرات عامة ....مشكلتك مشكلة...راح ترجع عليها كلها في الـfunction و تغيرها لتطابق البرنامج الجديد. يعني ما راح يكون عندك reusable code.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أريد أن أسألك يا أخ MIT .. هل كان من أهـداف البرمجـة الهيكلية إمكانية إعادة الاستخدام.... حتى تذكر هذا العيب .. ألم تأتي البرمجـة الشيئية لهذا الغرض حتى تزيد من الإنتاجيـة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لكن هذا لا يعني ان الـ procedural programming يجب ان يكون سيئا و ملخبطا ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أخي Sultan Althibity

الصراحة أنني آخر شخص يسأل في موضوع أهداف البرمجة. :) أصلا دراستي في هندسة الحاسبات كانت hardware أكثر من برامجيات و غيرها.

و لما كنت أقرأ كتب هندسة البرامجيات و غيرها......و أشوف الأمور اللي لازم أراعيها بكتابة الكود مثل maintainability و reliability و أمكانية أعادة الأستخدام و غيرها........ما كنت ألتزم فيها للسهولة.

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

عن خبرة و ليس عن دراسة نظرية.......أتصور أنه حتى procedural programming المفروض يكون منظم بحيث يحاول قدر الأمكان أن يتوافق مع الأهداف المذكورة بالأعلى. و الأفضل أنه الواحد يتعلمها من البداية. حتى أذا حبيت تسوي من الكود مالتك classes راح يكون أسهل بالتحويل. ......... يمكن توجد أمور تسهل العمل, و لكن راح تصعبه عالمدى البعيد و تاخذ وقت الى أن تتعدل.

بالنهاية......هذا الرأي مبني على خبرة و ليس نظريات....و مثل ما ذكرت...آني آخر واحد يسأل بالنظريات. :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

من قال أن عليه أن يكون سيئاً وملخبطاً ....

الذي أقصده هـنا أن للبرمجـة الهيكلية قواعـد وأساسيات يجب الالتزام بها ( لم أدرس أساسيات البرمجـة الهيكلية ولكني أتكلم من واقع تجربتي لفوائد البرمجـة الشيئية) ... الذي أراه هـنا يا أخ حسن الجـودي أنك تحاول تطبيق مفاهيم البرمجـة الشيئية على البرمجـة الهيكلية... قد تقول أن استخدام المتغيرات العامـة عيب ومصيبـة ؛البرمجـة الهيكلية لا تحاول الوصول إلى إمكانية إعادة الاستخدام ، بالتالي فمالذي يمنعـك من عـدم استخدام المتغيرات العامـة ,,,,, كل ما أود أن أشير إليه هـنا ... أننا إذا كنـا تحت لغـة برمجـة هيكلية فلماذا علينا أن نترك أداة تعتبر نسبياً مهـمـة وهي المتغيرات العامـة .. بإمكاننا استخدامها إذا التزمنا بألا تكون مصيبة على البرنامج وإذا استخدمناها في المكان المناسب ؛ عذراً على الفلسفة الزائدة وأتـمنى تصحيح أخطائي (بالحسنى وليس بالاستهزاء) وخاصة أني لم أدرس مبادئ البرمجـة الهيكلية التي تنساها جامعتنا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أود أن أضيف شيئاً طريفاً :

أليست المتغيرات العامـة تسهل حل واجبات الجامعـة البسيطـة (لا أدري عـن واجبات جامعتـكم ) والتي غالباً ما تكون صغيرة ، لماذا علي تعقيد نفسي بكتابة كـود أراعي فيه أساليب البرمجـة الآمنـة .. هل سيرضى عـني مدرس المادة ويزيد مستواي لديه .. لماذا علي أن أتعب نفسي وأجهـدها لأجل شيء لا يستحق ......... بالنسبة للأكـواد التي أكتبها كتحدي لبعض زملاء الجامعـة والأخرى التي أكتبها كإثبات لنفسي فلم يسبق لي أنني قمت بإضافة أي متغير عام في الكـود (لأنني لا أحتاج إلى ذلك ) بل حتى أني دائماً لا أنسى أن أسند الصفر إلى أي مؤشر أقوم بتحرير ذاكرتـه .........

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أخي سلطان

أستخدام المتغيرات العامة ليس عيب و لا مصيبة و لا مشكلة. ........ لكن يبقى تقليل أستخدامها شيء مطلوب.

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

بنظري الواجب قصر أستعمالها على الحالات اللي راح تنغلق بوجوهنا كل الحلول الأخرى.

أخوك

محمد

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
أستخدام المتغيرات العامة ليس عيب و لا مصيبة و لا مشكلة. ........ لكن يبقى تقليل أستخدامها شيء مطلوب.

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

بنظري الواجب قصر أستعمالها على الحالات اللي راح تنغلق بوجوهنا كل الحلول الأخرى.

أتفق معـك في كل ما قلت (h)

ولكني لا أتفق حول رميها في سلة المهـملات :D .... فهي تقنية مثلها مثل أي تقنيـة لها عيوب ومميزات وإن كان من النادر أن أجد مكان أطبقه فيها جيداً

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هناك نقطة مهمة, احب التنويه اليها.

البرمجة الشيئية لن تشعر بقائدتها الكبيرة الا بالمشاريع الكبيرة جدا, و ليس الصغيرة.

من ناحية التنظيم و غيره, الانسان لازم دائما يحاول يخلي الكود منظم قابل للقرائة و التصحيح و التغيير, بغض النظر عن اي شيء آخر, اللهم الا اذا كان يكتب برنامجا للاشتراك في مسابقة اكثر الأكواد غير المفهومة, مثل هذه http://www.ioccc.org

مبادئ البرمجة الكائنية ليست حكرا عليها .. و أصلا لا يصح ان نسميها مبادئ البرمجة الهيكلية.

إحدى أهم الأفكار وراء البرمجة الكائنية/الشيئية هي فكرة المحافظة على مستوى عالي من الـ cohesion و مستوى منخفض من الـ coulping داخل البرنامج.

هذه الكلمات يقصد بها فصل مكونات البرنامج عن بعضها بأكبر قدر ممكن, و تقليل التداخل فيما بين تلك المكونات.

هذه الفكرة تم تطويرها أصلا من أجل الـ procedural programming, حتى قبل ان تولد الـ oop

نفس الشي, فكرة الـ reusability ايضا ليست حكرا على الـ object oriented programming, الـ oop كان إحدى أهدافها هو تدعيم هذا المبدأ, و لكن ليست البرمجة الكائنية هي من اخترع هذا المبدأ.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
هذه الفكرة تم تطويرها أصلا من أجل الـ procedural programming, حتى قبل ان تولد الـ oop

نفس الشي, فكرة الـ reusability ايضا ليست حكرا على الـ object oriented programming, الـ oop كان إحدى أهدافها هو تدعيم هذا المبدأ, و لكن ليست البرمجة الكائنية هي من اخترع هذا المبدأ.

شكراً على هذه المعلومات (h)

وأعتذر عـن جهلي في الردود السابق...لم أكن أعلم أن البرمجـة الهيكلية هـكذا....

البرمجة الشيئية لن تشعر بقائدتها الكبيرة الا بالمشاريع الكبيرة جدا, و ليس الصغيرة.

شعرت بفائدة البرمجـة الشيئية حينما تجاوزت عـدد أسطر أكـوادي التي أكتبها الـ 1200 سطر .. مع العلم أنه لم يسبق لي كتابة أكثر من 5 آلاف سطر .... وبالرغـم من صغر هذه البرامج إلا أنه لولا البرمجة الشيئة وسحر الوراثة وتعـدد الأوجـه لبقيت أسابيع في كتابة تلك الأكـواد

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

البرمجة الشيئية تسهل الكثير, خصوصا على المبتدئين مثلنا, انا كثيرا من الاحيان اكتب بخليط من البرمجة الشيئية و العادية, و عادة استخدم البرمجة الشيئية لبرمجة الأجزاء الصعبة او المعقدة, و ذلك لأنني لا استطيع تحليل المشكلة كلها مرة واحدة ..

و لكن اعتقد ان هناك خبراء يستطيعون برمجة اشياء معقدة بالأساليب العادية, يعني بدون كتابة اي class, و بالنسبة لهؤلاء الناس, قد يرون ان البرمجة الشيئية مضيعة للوقت .. و لكن حتى بالنسبة لهؤلاء الناس, عندما يكتبون برامج كبيرة جدا, ستتعقد المسائل عليهم!

و هذا ما أقصده عندما قلت ان فائدتها الحقيقة تظهر في البرامج الكبيرة .. لأنه ممكن يأتي واحد و يقول لك انه خبير و انه لا يحتاج الى الـ oop!

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

صراحة فائدة في الاجابة وفائدة في النقاش الرائع

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

وطلب اخير

for (int i=0;i<arraysize;i++){
cout<<parray[i]<<endl;
}

هل هذا الكود صالح لعرض قيم مصفوفة

كما افادني الاخ Sultan_Althibity

وشكرا لكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
اخواني اكذب اذا قلت انكم اترتم اعجابي

الله يسامحك يعـني نحن ما أثرنا اعجابك :D

هل هذا الكود صالح لعرض قيم مصفوفة

بالتأكيد صالح ، إذا اعتبرت أن parray هـو المؤشر و arraysize عـدد عـناصر المصفوفة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

االعفو اخي غلطة مطبعية ومشكور والله انا مقصر معاكم

افيدونا افادكم الله

اذا معاكم اي معومات تفيدنا الرجاء تراسلونا على

[email protected]

بس احب تذكروا لي انكم من اعضاء الفريق العربي عشان انا شكاك كثير

اخوكم محمد الرديني

تم تعديل بواسطه mamrya
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .