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

كيفية حذف العناصر المتكرر في مصفوفة في لغة ال C ??

مغلق
بدأه ملك الشبكات في 10 ديسمبر 2001 · 7 رد · 3,171 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مطلوب كتابة برنامج أو دالة لحذف العناصر المتكررة في مصفوفة ، علماً بأن هذه المصفوفة مفروزة من الأصغر إلى الأكبر !

س: ماطريقة حذف هذه العناصر ، وبأقصر كود ممكن؟؟؟؟؟؟

مثال:

Array1

---------

10

20

20

30

Array1 after remove the duplicate

-----------------------------------------------

10

20

30

(g)

#2

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

Coding on the Cloud and for the Cloud!

My Blog

#3

أريد طريقة أخرى ، لأني في الحقيقة أعرف الحل ولكن أحب التعرف على طرق أخرى

----------------------

#include 
#define N 5
int main(void)
{
	int a[N]={10,20,20,30,40}, b[N],i=0,j=0;

	b[j]=a;
	printf("%dn",b[j]);
	i++;
	while (i	{
		if (a==b[j])
		{
			i++;
		}
		if (a!=b[j])
		{
			j++;
			b[j]=a;
			printf("%dn",b[j]);
		    i++;
		}
	}

	return(0);
}

البرنامج سيطبع التالي:

---------------------------

10

20

30

40

--------------------------

(g)

#4

Hi Networks King,

I think this code is shorter and will do the same that your last code does.

#include 
#define N 5
int main(void)
{
	int a[N]={10,20,20,30,40}, Last=0,i=0;

	for (i=0;i	{
		if (a!=Last || i==0)
		{
			printf("%dn",a);
		}
		Last=a;
	}

	return(0);
}

I agree with Mr. Hani with what he has said.

#5

فكرة حلوة ، وكود قصير ، هل من أقصر !!

جزاك الله كل خير يا عبقري

(f) ;)

#6

الاخ العزيز:

انت الان تحاول عمل نفس الفكرة التي طرحتها قبل اسبوع, فلماذا لا تشاركنا في موضوعنا "مسابقة الاكواد"

http://arabteam.nicmatic.com/vb/showthread...=&threadid=6407

متاكد ان هذه الفكرة ستروق لك .

#7

Good code Genius,

But I have something to tell about the code, there is no need to test for i==0 for each iteration if you initialize the last variable with a[0] and starts from the second item in the array. as the following code:

#include 

// N should be at least 1
#define N 	5	

int main(void)
{
	int a[N] = {10, 20, 20, 30, 40};
	int nLast, i;

	nLast = a[0];
	printf("%dn", nLast);

	for (i = 1; i < N; i++)
	{
		if (a != nLast)
		{
			printf("%dn", a);
		}
		nLast = a;
	}

	return(0);
}

So my code is more efficient but a "little bit larger".

again good code Mr. Genius..

Coding on the Cloud and for the Cloud!

My Blog

#8

فكرة رائعة جداً.

فالحقيقة أن من المهم أن تتظع - كمبرمج - على أفكار الآخرين ، لتستفيد منها وتأخذ الإيجابي منها.

لذا أنا معكم ;)

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

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

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

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

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

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