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

سؤال في ال Array ... حياكم يا مبرمجين

بدأه ++C++ في 19 فبراير 2009 · 7 رد · 748 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أخواني عندي أري وأبي أقلب قيمها وكتبت الكود ولكنه لا يقلب يطبعه كما هو !!! ولا أدري ما السبب


using namespace std;

int main (){
int temp;
int waleed[10]={1,2,3,4,5,6,7,8,9,10};

for (int i=0; i<10; i++)
cout << waleed << endl;


for (int j=10,i=0; i<10 && j>=0; i++ , j--){

temp=waleed;
waleed=waleed[j];
waleed[j]=temp;
}

for (int w=0; w<10; w++)
cout << waleed[w] << endl;


return 0;
}
</font><font size="4">
 #include <iostream>

وجربت طريقة تقليدية غبية ولم تنجح :


using namespace std;

int main (){
int temp;
int waleed[10]={1,2,3,4,5,6,7,8,9,10};

for (int i=0; i<10; i++)
cout << waleed << endl;

temp = waleed[0];
waleed[0] = waleed[9];
waleed[9] = temp;

temp = waleed[1];
waleed[1] = waleed[8];
waleed[8] = temp;

temp = waleed[2];
waleed[2] = waleed[7];
waleed[7] = temp;

temp = waleed[3];
waleed[3] = waleed[6];
waleed[6] = temp;

temp = waleed[4];
waleed[4] = waleed[5];
waleed[5] = temp;

temp = waleed[5];
waleed[5] = waleed[4];
waleed[4] = temp;

temp = waleed[6];
waleed[6] = waleed[3];
waleed[3] = temp;

temp = waleed[7];
waleed[7] = waleed[2];
waleed[2] = temp;

temp = waleed[8];
waleed[8] = waleed[1];
waleed[1] = temp;

temp = waleed[9];
waleed[9] = waleed[0];
waleed[0] = temp;

for (int w=0; w<10; w++)
cout << waleed[w] << endl;


return 0;
}

</font><font size="4">
 #include <iostream>

#2

انا كتبت هذه الدالة لتؤدى المطلوب ،، تم بنجاح الا شئ واحد ، يظهر رقم لا أعرف من اين اتى :

void reverseArray(int a[], int size)
{
	int * s = new int[size];
	for (int k=0; k < size; k++)
	{
		s[k] = a[k];
	}

	int j;
	for (int i = 0, j = size; i < size, j > 0; i++, j--)
	{
		a = s[j];
	}

}

كود البرنامج كاملاً ::

#include <iostream>
using namespace std;

int main()
{
	int a[10] = {1,2,3,4,5,6,7,8,9,10};
	 cout << "---------Before Reversing---------" << endl;
	for (int i=0; i<10; i++)
	{
		cout << a << endl;
	}
	cout << "---------After Reversing---------" << endl;

	reverseArray (a, 10);



	for (int x=0; x<10; x++)
	{
		cout << a[x] << endl;
	}
	cout << endl;
	system("pause");
	return 0;

}

نتيجة البرنامج :

post-132119-1235060761_thumb.png

لا أعرف السبب صراحةً ، لكن نظرياً الخوارزمية صحيحة :wub:

وفقكم الله ،،،

#3

الأخ ++C++ لديك مشكلة أنك تستخدم نفس المصفوفة عندما تريد قلبها وهذا خطأ لأنك بعد اتمام نصف قلب نصف المصفوفة النصف الثاني يكون قد تم استبداله بالنصف الأول فتظهر المصفوفة لديك كانعكاس تبدأ من 1 حتى 5 ثم تعود من 5 حتى 1

عمر قام بحل المشكلة باستخدام مصفوفة ثانية قام بإنشاءها كـ pointer

عمر حلك صحيح فقط أثرت عليك الدراسة فأعطيت j قيمة ابتدائية size والأصح هو size-1 وشرط الحلقة محقق عندما j أكبر من الصفر والأصح هو عندما j تساوي أو أكبر من الصفر

	for (int i = 0, j = size-1; i < size, j >= 0; i++, j--)
	{
		a = s[j];
	}

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#4

السلام عليكم ,,

انظر لحلك بعد التعديل عليه :)

int temp;
int waleed[10]={1,2,3,4,5,6,7,8,9,10};

for( int i = 0; i < 10; i++ )
	std::cout << waleed << std::endl;


for( int j = 9, i = 0; i < 5 && j >= 0; i++ , j--){

	 temp=waleed;
	 waleed=waleed[j];
	 waleed[j]=temp;
}

for (int w=0; w<10; w++)
	std::cout << waleed[w] << std::endl;
#5

عمر غير اللوب الثاني هكذا :

for (int i = 0, j = size - 1; i < size, j >= 0; i++, j--)

او يمكن استخدام التالي :

void reverseArray(int a[], int size)
{
	for (int i = 0; i < size/2; i++) swap(a, a[size - i - 1]);
}

أسف أخي خالد لم ارى مشاركتك ..

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#6

ولا مشاركة اكس:D

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#7
Xacker كتب:
عمر حلك صحيح فقط أثرت عليك الدراسة فأعطيت j قيمة ابتدائية size والأصح هو size-1 وشرط الحلقة محقق عندما j أكبر من الصفر والأصح هو عندما j تساوي أو أكبر من الصفر

هى مش الدراسة بس :blush: انا الأسبوع ده مقضيها لعب طول اليوم ، والدى هيطردنى من البيت عشان مش باذاكر :lol: :P

شكراً على التعديل مستر X

شكراً GM على التعديل

بس انا مش فاهم الفكرة التانية :wink:

وفقكم الله ،،

#8

تنبدل الأول مع الاخير - الثاني مع قبل الاخير - الثالث مع قبل قبل الاخير وهكذا .

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

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