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

كيف أجعل المصفوفة تعود بكمال عناصرها

مغلق
بدأه السهم الناري في 25 يوليو 2003 · 13 رد · 902 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته:

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

أنا جربت دالة تقوم بطباعة عناصر المصفوفة داخلها أي تعود بالقيمة void ولكن أحب أن أعرف كيف تعود بأكثر من قيمة حتى ولو كانت 100 .

سواء الدالة داخل class أو خارجه.

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#2

خي السهم الناري ...

ممكن داخل داله ال void قوم بإستدعاء الداله التي تحوي على قيم المصفوفه و ذلك عن طريق for loop ذلك بزياده ال index للمصفوفه , و في هذه الحاله سو ترجع الداله قيمه كل عنصر في المصفوفه مهما كان العدد .........

وصلت ؟؟؟؟؟؟؟؟؟؟؟؟؟؟ :)

Professor_X

#3

أشكرك فقد رديت علي في أكثر من سؤال .

يعني قصدك استخدم for lop في main وكل مره يستدعي عنصر معين ثم ازيد دليل المصفوفة وهكذا. هل هذا هو قصدك.

عنك مثلا انا جربت ويمك انت اني ارجع بstring كامل مثلا هذه الدالة :

char * GetName(){ return Name; }

وكثيرا مانستخدمها في الكلاسس class فكيف أفعل ذلك بالنسبة لعناصر مصفوفة عدديه.

أتعبتكم معي بس من غيركم مانسوا شيء.

شكر خاص للبرفسور وجزاه الله خيرا.

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#4

اخي العزيز

جرب مع static عند التعريف باسم المصفوفه مثلا

  [5]static int a

داخل الداله ويكون تعريف الداله كما ذكرت

int* funname()

و ال return

نعرف مؤشر من نفس نوع المصفوفه و نساويه بها

int *p

p=a

return(p)

وإن شاء الله تمشي

والله الموفق

#5

في حال الارسال انت راح ترسل مصفوفه0000 وتبي ترجعها بالكامل000

اوكي عرف بوينتر ياشر على المصفوفه وعدل فيها وبعدها ارسل البوينتر

هذا اجتهاد مني :) ان شاءلله وصلت الفكرة

#6

السلام عليكم

شكر الله لكم على ردودكم القيمه التي هي محل تجربتي القادمه أحاول أجرب الطريقتين وأشوف أن شاء الله تمشي معي.

فلسفة الطريقة التي قلت هي مأحاول القيام به ولكن لم أنجح الى الأن وأن شاء الله أصل للحل المناسب.

مرةأخرى شكرا لكم...........

-

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#7

استخدم الموشرات

اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#8

كلامك سليم وأنا عارف أخ khwlani واكن المشكلة أني أحتاج مثلا لقراءة القيم بlop تكرار فكيف أضع return كل مرة قبل أن ينتهي التكرار.....

ياليت أخ khwlani مثال لحل هالمشكلة البسيطة مثال مبسط كافي لاستيعاب الكيفية وبقية الدوال..............

أرجو مثال عملي شروح لو تكرمتم............

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#9

السلام عليكم ورحمة الله وبركاته :

أخي السهم الناري, لا تستطيع استخدام العبارة return من أجل إعادة مصفوفة عادية أي:

SomeThing Fun()

{

   int TempArray[10];

   return TempArray;

}

أياً كان someThing فلا أعتقد أنه يمكن إرجاع المصفوفة كاملة ولكن ما هو الحل:

الحل برأيي هو تمرير المصفوفة إلى التابع الذي تريد أن يعيد لنا مصفوفة أي:

void Func(int a[], int a_size)

{

   for (int i = 0; i < a_size; i++)

   {

      // Do something on a's elements

      a *= 4

   }

}

بع استدعاء هذا التابع وتمرير المصفوفة سوف تلاحظ أن عناصر المصفوفة قد ضُربت جميعها بالرقم 4 .

كل ما سبق إذا كانت المصفوفة عادية أي : int a[10]

أما إذا أردت استخدام المؤشرات ( وهذا الأفضل ) فأعتقد أن المسألة محلولة بالنسبة إليك.

ملاحظة هامة : أنا فهمت أنك تقصد بالمصفوفة العادية أي التي تُحدد عدد عناصرها مسبقاً

أما إذا كنت تقصد بامصفوفة العادية : المصفوفة التي عناصرها ليست من النوع char فإليك هذا البرنامج وأرجو أن أكون قد أفدتك :

#include <iostream.h>



int * CallArray()

{

	int * x = new int[10];

	for (int j = 0; j < 10; j++)

	{

  x[j] = j;

	}

	return x;

}





void main()

{

	int * a;



	a = CallArray();

	for (int j = 0; j < 10; j++)

	{

  cout << " " << a[j];

	}

	cout << endl;

}
#10

أخ اسماعيل شكر الله لك فعلن حجرب البرنامج اللي عطيتني لانه هو ماقصدت ولكن برضه أحببت استخدام المؤشرات ولذلك سأطبق الحجز الدنميكي مثل ماهو موجود هنا " على فكرة حسوي حفظ للصفحة وقرأها على رواقه وأفهمها لأن الشرح متعوب عليه ولا ودي أضيعه " ....

جزاك الله خير

توضيح أنا لم أقصد نفس المثال الأول أنا قصدت مثلا " أني أعمل for lop تكرار داخل دالة وفي كل مرة ترجع الدالة في العنصر ولكن مع استمرار التكرار لن تعود الا بأخر عنصر هذا اذا لم تعد صفر اليدين بخفي حنين ..

مثلا

int Fun(int a[3])

{

for (i=0;i<3;i++)

return a;

}

جهدك مشكور عليه أخي اسماعيل ووالله أن لساني عاجز هن الشكر بارك الله فيك...........

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#12

فعلن كلامك صحيح وهذا كنت اصتدم به دائما إلى أن وفقني الله وسألت هنا فجاوبتني الجاوب الذي كان ينقصني.

حيث كنت في السابق أعمل for داخ الدالة ولاتعود ألا بقيمة واحدة فقط حتى بالمؤشرات تعود بالعنوان فقط........ألا أن فهمت المثال الذي كتبته أخ اسماعيل حيث وضعنا for داخل دالة main لكي نخرج العناصر ونحصل عليها كلها...

فشكر الله لك................أخوك خالد

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#14

الي سويته أكثر من الواجب أخي اسماعيل لكن وش نقول تواضعك أكبر من أن أكرر شكري أخي الكريم والله يزيدنا وأياك من العلم النافع أن شاء الله.

(f)(f)(f)(f):):):D(gift)(gift)(gift)(gift)

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…