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

أرجو المساعدة في كتابة دالة لunsorted List

بدأه laila22 في 17 نوفمبر 2008 · 10 رد · 888 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أريد كتابة دالة ل

unsorted list

حين اضع رقم معين تعطيني عدد الارقام الاكبر من الرقم الذي ادخلته

مثال:

the list contains the following numbers:

2,8,13,4,7

حين ادخل رقم 5

يجب ان يعطي البرنامج نتيحة نهائية مقدارها 3

يجب ان تبدأ بهذا

int GreaterThanItem(ItemType givenItem);

هذه محاولتي في الاسفل لكنها غير صحيحة..هل من الممكن أن تساعدوني؟

int GreaterThanItem(ItemType givenItem);
{
Node *ptr;
Ptr=head;
While(ptr!=node*)NULL)
{
If(ptr->info==item)
{
While(ptr !=NULL)
{
cout<<item;
}
}
Ptr=ptr->next;
}
Return NULL;
}

تم تعديل هذه المشاركة بواسطة laila22 في 17 نوفمبر 2008 في 18:56

#2

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

هذه ليست محاولة وانما جزء من حل , انا فهمت سؤالك جيدا ولكن مااريد ان اسالك عنه , هل تريد الحل بواسطة الـLinked List ؟

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#3

شكرا على الرد

نعم اريده بواسطة الlinked list

وفعلا هذا جزء من الحل لكنني لم اعرف كيف اجعل الليست بالترتيب و احسب بعده عدد الارقام الاكبر من الرقم المدخل

ارجو المساعدة ولك جزيل الشكر

#4

اهلا اخي ,

اولا تحتاج إلى بناء القائمة وتعلم كيفية اجراء العمليات على هذه القائمة ( الاضافة - الحذف - الترتيب-البحث )

كل هذا موجود في هذه الدروس

الدرس الاول

الدرس الثاني

يوجد هنا في هذه المشاركة تطبيق على القائمة واستخدام اغلب العمليات .

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

القائمة التي تحتاجها ستحتوي على متغير ليحمل الرقم الذي سيتم اضافته , والمؤشر .

لمعرفة عدد الارقام الاكبر من الرقم المدخل تحتاج إلى الوصول إلى اول عقدة من القائمة ومقارنة الرقم الذي تحمله مع الرقم المدخل , بعدها يتم التحرك إلى العقد التي تليها ومقارنة كل ارقام العقد بالرقم المدخل , وهكذا حتى تصل إلى نهاية القائمة .

تحتاج إلى تعريف متغير count مثلا , يزيد عندما يكون الرقم الموجود في اي عقدة اكبر من الرقم المدخل , بعدها يتم طباعة المتغير count.

اتمنى ان تكون فكرة الحل واضحة .

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

تحياتي . . .

تم تعديل هذه المشاركة بواسطة time1 في 17 نوفمبر 2008 في 20:07

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#5

مشان الله ساعدوني

والله حاولت كتير تايم 1 بس ما عم بقدر..العمليات الاساسية بعرفها

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

#6
اقتباس
مشان الله ساعدوني

والله حاولت كتير تايم 1 بس ما عم بقدر..العمليات الاساسية بعرفها

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

صدقيني اختي الكل راح يساعدك بس ابدا ماراح نقدم الحل جاهزا ً , احنا نعرض الافكار وانتي عليكي تطبقي هالافكار واذا واجهتي اي سؤال احنا نساعدك .

باختصار المطلوب منك انك تعمل قائمة مثل القائمة الموجودة بالدروس الي اعطيتك اياها , فقط احذف العنصر name من القائمة لانك لن تحتاجه , لن تحتاج الا للnum

يعني بنية القائمة راح تكون على هالشكل :

struct node{
	int num;
	node * next;
};
typedef node *node_ptr;

بعدها تحتاج إلى تعريف العمليات التالية , اضافة اول عنصر , اضافة عنصر من الاخير , عرض القائمة , مقارنة عدد ما بالاعداد التي تحملها القائمة ( الي هو سؤالك ).

جميع العمليات السابقة انا شرحتها باستثناء العملية الاخيرة والتي هي بالاصل سؤالك .

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

int Count_Max(node_ptr&q,int x)
{
	node_ptr p;
	p=q;
	int count=0;
	while(p!=NULL)
	{
		if(p->num > x)
		count++;
		p=p->next;
	}
	return count;
}

تم تعديل هذه المشاركة بواسطة time1 في 18 نوفمبر 2008 في 00:45

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#7

شكلو حتيجيني جلطة بالدماغ واموت قبل ما اعرف احله هههههههههه

رجعت عملت الي قلتلي عنه

هاد الي طلع معي

struct node{
int num;
node * next;
};
typedef node *node_ptr;

void firstNode(node_ptr &first,int n,char name[10])
{
if(first==NULL)
{


first=( node* )malloc(sizeof(node));
first->num=n;
strcpy(first->name,name);
first->next=NULL;
}
else
{
cout<<"Error:";
}
}

void append (node_ptr &first,int n,char name[10])
{

node_ptr p,q;

p=first;
while(p->next!=NULL)
{

p=p->next;
}
q=(node *)malloc(sizeof(node));
q->num=n;
strcpy(q->name,name);
q->next=NULL;
p->next =q;


}

void Display(node_ptr&q)
{
node_ptr p;
p=q;
while(p!=NULL)
{
cout<<p->name<<":"<<p->num<<endl;
p=p->next;
}
}

int Count_Max(node_ptr&q,int x)
{
node_ptr p;
p=q;
int count=0;
while(p!=NULL)
{
if(p->num > x)
count++;
p=p->next;
}
return count;
}

تم تعديل هذه المشاركة بواسطة sawsan87 في 17 نوفمبر 2008 في 21:58

#8

ارجوكم ساعدوني

#9

بليز ممكن حدا يساعدني ؟؟؟ بليييييييييييز

#10

مرحبا اخي الفاضل

طالما انك حذفت العنصر name من بنية القائمة الاساسية , كان يجدر بك ان تحذفها من الكود الباقي ايضا :

strcpy(first->name,name);

cout<<p->name<<":"<<p->num<<endl;

ثانيا , بعد اجراء التعديلات يصبح الكود صحيح وفقط تحتاج لكتابة البرنامج الرئيسي الذي يستدعي الدوال السابقة , وراح يعمل برنامجك كما طلبت .

ثالثا :

اقتباس
لا تتوقع أن يجاب على سؤالك خلال ساعات قليلة، لكن تأكد أن أذا كان سؤالك يستحق الإجابة ( غير مكرر، و يوفر معلومات كاملة) فإنك ستحصل على الإجابة.. أحيانا يحتاج من يجيب للوقت لجمع معلومات عن الإجابة. و اذا تأخرت الاجابة فمن حقك الاستعجال فقط باضافة عبارة "للرفع" بدون أي عبارات أخري لا داعي لها أو تكرار لنفس السؤال.

اي لاداعي لرفع الموضوع باليوم اكثر من مرة باستخدام عبارات " ارجوكم ساعدوني و ....إلخ "

رابعا :

اخي laila22 هل انت صاحب المعرف sawsan87 ؟

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#11

عملت متل ما قلتلي بس هلا شو بدي احط بال public و الprivate و الmain?

struct node{
int num;
node * next;
};
typedef node *node_ptr;

void firstNode(node_ptr &first,int n,char name[10])
{
if(first==NULL)
{


first=( node* )malloc(sizeof(node));
first->num=n;
first->next=NULL;
}
else
{
cout<<"Error:";
}
}

void append (node_ptr &first,int n,char name[10])
{

node_ptr p,q;

p=first;
while(p->next!=NULL)
{

p=p->next;
}
q=(node *)malloc(sizeof(node));
q->num=n;
q->next=NULL;
p->next =q;


}

void Display(node_ptr&q)
{
node_ptr p;
p=q;
while(p!=NULL)
{
p=p->next;
}
}

int Count_Max(node_ptr&q,int x)
{
node_ptr p;
p=q;
int count=0;
while(p!=NULL)
{
if(p->num > x)
count++;
p=p->next;
}
return count;
}

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