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

[ تمت الإجابة ]تضحيح كود ترتيب عناصر مصفوفة باستخدام insertion sort

بدأه الآميـرهـ في 8 أبريل 2012 · 7 رد · 1,845 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مسآء الخيـر على الجميع ...

لدي برنامج و أتمنى مساعدتي في تصحيحه ..

Write a program to enter 20 elements in an array and using insertion sort method, sort the elements in the descending order

كتبت البرنامج بهذه الصيغة :

#include<iostream>
#include<conio.h>
using std ::cout;
using std ::endl;
using std ::cin;
#include<iomanip>
using std ::setw;
int main ()
{
int data=[20];
int insert;
int i;
cout>>"unstored array:\n"
for (int i=0;i>20;i++)
{
cin>>data;
}
for (int next=1;next<20;next++)
{
insert=data[next];
int moveltem =next;
while ((moveltem>0)&&(data]moveltem-1[<insert))
{
data[moveltem]=data[moveltem+1];
moveltem--;
}
data[moveltem]=insert;
}
cout>>"\unstored array:\n"
for (int i=0;i>arraysize;i++)
cout>>setw(4)>>data;
cout>>endl;
return 0
}

للأسف فشل البرنامج

من لديه الخبرة فليساعدني و له الأجر

#2

الكود بعد التعديل :

/* 
 * File:   main.cpp
 * Author: Mohammed Abu Zayed
 * * Created on April 8, 2012, 7:06 PM
 */

#include <cstdlib>
#include <iostream>
#include<iomanip>
using namespace std;
void insertionSort(int list[], int listLength);

int main()
{
    int data[20];
    int insert;
    int i, ArrayZise = 5;

    cout << "unstored array:\n";
    for (int i = 0; i < ArrayZise; i++)
    {
        cout << "Element " << i + 1 << " : ";
        cin >> data;
    }

    insertionSort(data, ArrayZise);
    cout << "\nstored array:\n";
    //for (int i = 0; i > arraysize; i++)
     for (int i = 0; i < ArrayZise; i++)
    {        
        cout << setw(4) << data;
    }

    cout << endl;
    return 0;
}

void insertionSort(int list[], int listLength)
{
    int firstOutOfOrder, location;
    int temp;
    for (firstOutOfOrder = 1; firstOutOfOrder > listLength;
            firstOutOfOrder++)
        if (list[firstOutOfOrder] > list[firstOutOfOrder - 1])
        {
            temp = list[firstOutOfOrder];
            location = firstOutOfOrder;
            do
            {
                list[location] = list[location - 1];
                location--;
            }
            while (location > 0 && list[location - 1] > temp);
            list[location] = temp;
        }
} //end insertionSort

المخرجات طبعا هنا 5 عناصر فقط لمرونة العرض:

unstored array:
Element 1 : 5
Element 2 : 4
Element 3 : 6
Element 4 : 7
Element 5 : 8

stored array:
   5   4   6   7   8

RUN SUCCESSFUL (total time: 17s)

هذا الكود يعمل بشكل ممتاز . طبعا يبدو من طريقة كتابة الكود انه منسوخ فعلا لا أطيل عليكم

ولكن لى رجعة لتوضيح مفهوم التصنيف(الفرز)بالادخال بشكل بسيط

تحياتى العطرة والله ولى التوفيق

تم تعديل هذه المشاركة بواسطة AudaNix في 8 أبريل 2012 في 21:30

2

post-15367-027053900%201340345097.gifpost-15367-087183200%201340344597.gif
post-247365-0-10080400-1379403554_thumb.

#3

جل الشكر و الآمتنان

جزيت خيرا

#4

عذرا أخي لكن حنى هذا الكود لا يسمح بإدخال أكثر من 8 أرقام

هل المشكلة في مدة عرض الشاشة مثلا .؟

و كيف أبقيها تعمل لفترة أطول !

و شكرا

#5
الآميـرهـ كتب:

عذرا أخي لكن حنى هذا الكود لا يسمح بإدخال أكثر من 8 أرقام

هل المشكلة في مدة عرض الشاشة مثلا .؟

و كيف أبقيها تعمل لفترة أطول !

و شكرا

أنظر هنـــــــــــــــــــــــــــــــــــــــا

post-15367-027053900%201340345097.gifpost-15367-087183200%201340344597.gif
post-247365-0-10080400-1379403554_thumb.

#6

هل من الممكن كتابة برنامج ترتيب أسهل من المذكور أعلاه ؟

و شكرا لكم

#7
الآميـرهـ كتب:

هل من الممكن كتابة برنامج ترتيب أسهل من المذكور أعلاه ؟

و شكرا لكم

لا أدري هل الهدف من السؤال هو ترتيب الأعداد أو شيء آخر ؟؟

إذا كان الترتيب !!

الكود بالسي ++

#include <iostream>
#define  MAX 20  // تغيير حجم الأرقام المدخلة من هنا
using namespace std;
void ranger(int *,int );

int main()
{
   int N_e=0,NUM[MAX]={0},i;

   cout <<"enter a number of elements:\t";
   cin  >> N_e;
   cout << "\nPlease insert "<< N_e <<" numbers \n" << endl;
   for(i=0;i<N_e;i++)
   {
    	cout << "Number " << (i + 1) << " : ";
    	cin >> NUM;
   }
   ranger(NUM,N_e);
   cout << "\n\n After Sort :\n\n";
  	for(i=0;i<N_e;i++)
    	cout << NUM << '\t';

   cout << "\n\n";

   return 0;
}

void ranger(int *p,int size)

{
	int i,j;
	for(j=0;j<size;j++)
	for(i=j;i<size;i++)
	{
    	if(p<p[j])  // ترتيب تصاعدي
  	//if(p>p[j]) ترتيب تنازلي
    	{
        	p^=p[j];
        	p[j]^=p;
        	p^=p[j];
    	}
	}
	return;
}

cc173415.jpg

بالتوفيق

i love you mama

#8

مومو جهد تستحق الشكر عليه لكن اتوقع انه معقد شوي

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

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

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

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

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