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

برنامج اريد حله

مغلق
بدأه @ديمه@ في 21 مايو 2003 · 26 رد · 2,332 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم اجو مساعدتي في حل هذا البرنامج حاااولت فيه كثيرا لاااكن دون فائده ؟؟؟؟؟؟ ولكم جزيل الشكر ***Two arrays a[] and b[] have m and n elements,respectively.the elements in each array are sorted in ascending sequence.write a program to read in the two arrays and merge the two sets onto a third array c[] so the elements in c[] are in ascending order???

هو المشكله كيف ارتب المصفوفتان وفي نفس الوقت ادمج؟؟؟؟؟؟هنا الفكره

وشكراااا

امتحاني قرب واريده قبل الامتحان

#2

7 قرؤا مقالي ولا احد رد علي ؟؟؟؟؟؟؟؟:mad::mad::mad::mad::mad:

#3
اقتباس
مقالي

طلبي

#4

ما المقصود ب.. ascending sequence

#5

انا لااطلب الكود كاملا لكن كيف ادمج المصفوفتان وفي نفس الوقت ارتب

#6

هذه محاولتي لااكن الدمج مو صحيح والترتيب في الاخير

include#define size1 3
#define size2 3
main()
{

	int a[size1],b[size2],c[size1+size2];
	int i,pass,hold,k1,k2,k3;

	for(i=0;i	{

		printf("entern");
	scanf("%d",&a);
	}
	for(pass=1;pass		for(i=0;i			if(a>a[i+1]){
				hold=a;
			a=a[i+1];
			a[i+1]=hold;


	}
	for(i=0;i				printf("%d",a);




	for(i=0;i	{

		printf("enter bn");
	scanf("%d",&b);
	}
	for(pass=1;pass		for(i=0;i			if(b>b[i+1]){
				hold=b;
			b=b[i+1];
			b[i+1]=hold;


	}
	for(i=0;i				printf("%d",b);








while( k1
{

if(a[k1]
else

if (b[k2]< a[k1])  c[k3++] = b[k2++];

else 

{

c[k3++]=a[k1++];

k2++;

}

while (k1
while (k2


}

	return 0;
#8

حاولي ان تفهمي الخوارزميات الموجودة في الوصلات التالية ان لم تسطيعي فساكتب البرنامج اثناء مايكون عندي ؤقت

البرنامج السابق بطي جدا في حالة ان تكون السلسلة كبيرة جدا مثلا 100000 عنصر

http://www.csse.monash.edu.au/~lloyd/tilde...gDS/Sort/Merge/

http://cs.wlu.edu/~levy/cs312/lectures/22_NOV_2002.pdf

http://www.mvhs.net/~rkrane/clecs/ict/Less...n22/cppl22.html

http://www.cs.princeton.edu/~rs/cs226/lect...res/04merge.pdf

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

عندى حل أعتقد أنه فعال

يمكن استبدال الجزء الأخير من الكود بهذا الجزء

 for(k=0;k<size1;k++)

  for(j=0;j<size2;j++)

  {

   if a[k]<b[j]

   {

    c = a[k];

    i++;

    break;

   }

   else 

   c = b[j];

   i++;

   }

 while(i < size1+size2)

   {

    c = b[i-size1];

    i++;

   }
#10

لعمل Merge لمصفوفتين يمكنك ذلك من خلال طريقتين:

1. Linear Merge

2. Binary Merge

the first method is of order O(max(n,m)) , but the second is of order O(n log m) so you should choose onee of the two algorithms and your choosing would rely on the size of the lists, if they are of small size then you would better use the binary algorithm, however if you are working with large size lists you should use the linear merge algorithm

your code should include both algorithms and acts artificially with the respect to lists' sizes.

I will describe both algorithms and you would better convert them to a code with you language:

Linear Merge

i = 0; j = 0; // set to the begin of two lists

x = 0; // set to the begin of the new list

while (not end of any list)

{

if (list_1 >= list_2[j])

new_list[x++] = list_1[i++];

else

new_list[x++] = list_2[j++];

}



if (any list not finished)

copy the rest elements to the new_list;

Binary Merge[/ALIGN]



i = 0; j = 0 // set to the begin of the two lists



while (not end of list_1)

}

search binary for list_1 into list_2 and get the returned index;

for x=j to index-1 then

new_list[x] = list_2;



new_list[index] = list[i++];

j = index+1;

}



if (any list not finished)

copy the rest elements to the new_list;
choose the list_1 smaller than list_2;

هذه الالجوريزمات هى اسرع الجوريزمات لدمج المصفوفات المرتبة

أرجو ان تفهمها و تستوعبها جيدا

#11

اخواني

اخ اسماعيل انت لم تفهم المطلوب

الفكره اصلا في البرنامج انني لم ادمج المصفوفتان في نفس الوقت ارتب

*********************

شكرا لك اخي khwlani

******************

شكرا لك اخي

krmonty

****************

#12

شكرا اخي khwlan

لاااكن لم افهم شيء من الموجود

#13

بريحك يا أختى و بطلب منك تكتبى اسماء ال variables و الكود بيكون عندك من أخوتك هنا.

كنت فهمت انك لا تريدين كود فكتبت لكِ الجوريزم

لو اردتى انه احوله لكود فأنا مستعد... هذا الكود لن تجديه فى كتب البرمجة بل ستجديه فى كتب الالجوريزمات فلو اردتى البحث على الانترنت فلتبحثى عن :

Merge Sort Linear Algorithm

أحد الكتب المرشحة لك هو:

Introduction to Algorithms (Thomas H. Cormen)

Knuth Algorithms

و الاخير به حلول كل المشاكل المتعلقة بالترتيب بكود مؤثر و فعال

عندها ستنسين تلك الطرق الاجتهادية فى الترتيب لانك ستجدين الاسرع بهذه الكتب.

هى مراجع كليات الهندسة و اقسام الكمبيوتر بالجامعات الاوروبية.. فثقى بها

#14

see this page to visual the merge sort

please click on creat after that on sort

عذرا لعدم الشرح لاني اكتب العربي بالماوس

http://www.cosc.canterbury.ac.nz/people/mu...dsal/MSort.html

#include
#include

int *a,*b; 

void merge(int lo, int hi)
    {
        int i, j, k, m, n=hi-lo+1;
        k=0;
        m=(lo+hi)/2;
        for (i=lo; i<=m; i++)
            b[k++]=a;
        for (j=hi; j>=m+1; j--)
            b[k++]=a[j];
        i=0; j=n-1; k=lo;

        while (i<=j)
            if (b<=b[j])
                a[k++]=b[i++];
            else
                a[k++]=b[j--];
    }

 void mergesort(int lo, int hi )
    {
        if (lo        {
            int m=(lo+hi)/2;
            mergesort(lo, m);
            mergesort(m+1, hi);
            merge(lo, hi);
        }
    }
 void sort(int n)
    {

        b=new int[n];
        mergesort(0, n-1);
    }

main()
{
	int n,value,i;
	printf("%s input the Size of Array: ");scanf("%d",&n);
	a=new int[n];
	for(i=0;i	{
      printf("na[%d%s",i,"]: ");scanf("%d",&value);
	  a=value;
	}
  printf("n the array befor sort:n");
  for(i=0;i		printf(" %d",a);

	sort(n);
   printf("n the array after sort:n");
	for(i=0;i		printf(" %d",a);
	printf("n")

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

شكرا لك اخي العزيز csd

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

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

************************************

شكرا لك اخي khwlan وجعله الله في موازين اعمالك

جزيت خيرااا

***************************

#16

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

والله يوفق الجميع

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

شكرا لك اخي khwlani انا اعرف للدوال لااكن احاول ان اتحاشاها في برنامجي

#18

اخي جربت الكود لاااكن مو ضابط معي

#19

اخ csd تستطيع كتابه الكود باءي التغيرات تريد

#20

وينكم كانكم نسيتوا:'(

#21
اقتباس
كاتب الرسالة الأصلية : @ديمه@

اخي جربت الكود لاااكن مو ضابط معي

هل تقصدين البرنامج الذي كتبته لك !!!!

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

نعم اخوي هو

انا مبتدءه في اللغه وفي اشياء لم افهمها

اتمنى ان يكون بطريقه كودي الاول

؟؟؟؟؟؟؟؟؟؟؟؟

khwlani بالنسبه لسؤال لعبه المشنقه لم ترد علي فيه

#23

البرنامج يحتوي على ثلاث دوال

الدالة الاولى: لتقسيم سلسلة الى قسمين

الدالة الثانية: ترتب سلسلة محلية وتدمجهن مع بعض وهنا يستخدم Recursion

الدالة الثالثة: لترتيب السلسلة العامة او الاساسية

من الصعب عمل هذ ا الترتيب بدون استخدام Recursion

لفهم الخوارزميات اقراي الوصلات السابقة فاحداهن توضح رسومات على شكل صناديق هذه الوصلة تشرح الخوارزميات

البرنامج ي ينفذ عندي دون اي مشاكل

في حالة عدم التنفيذ عندك فاخبريني بالتفصيل ماذا فعلت حتى استطيع الاجابة

كذلك الامر بالنسبة للعبة المشنقة فالبرنامج ينفذ حسب الطلب

اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#24
اقتباس
كذلك الامر بالنسبة للعبة المشنقة فالبرنامج ينفذ حسب الطلب

اذا دخلت خطئين طلعني من اللعبه ؟؟؟؟؟؟؟؟؟؟؟؟

وهل ممكن ان يكون التغير في سطر واحد

مثلا دخلت cat

***

طيب

لما ادخل

c

راح يكون

c**

ولما ادخل

a

اريده ان يغير في نفس الاولى يعني مايطبعلي مره ثانيه بس يغير الاولىالمحدده بالاحمر

#25

انا اباعطيك مفتاح حلها اعتقد ان حلها رايح يكون بالrefrence اي pointer وشكراً جزيلاً

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

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