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

كيف يمكن التحقق من ترتيب المصفوفة

مغلقمُجاب
بدأه Luna Volver A salir في 11 أبريل 2014 · 3 رد · 810 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

Hello My Borthers

how R u ?

can U help me to solve the problem in this code and the request of the code, check if array is ordered or not 

#include<iostream.h>main(){int a[5];int i,x=0,;for(i=0;i<5;i++)cin>>a;for(i=0;i<5;i++){		if(a<a[i+1]&&a>a[i+1])		x=x+0;		else		x=x+1;		}		if(x!=0)		cout<<"NOT ORDER"<<endl;		else		cout<<"ORDER"<<endl;		}
#2 أفضل إجابة

صراحة لم ابذل جهد لفهم برنامجك لأنى مشغول، لهذا كتبت هذا المثال، إقرئيه بعناية و انظرى المخرجات التى وضعتها من بعده لفهم كيفية عمله - إن كان غير واضح - أو ضعي إستفسارك

#include <iostream>using namespace std;int main(){	int a[5];	for(int i=0; i<5; ++i) cin >> a;	// is array should be in ascending order?	bool asc = a[0] < a[1];	// array is sorted	bool sorted = true;	if (asc)	{		// check ascending order		for(int i=1; i<5; ++i)		{			if (a < a[i-1])			{				sorted = false;				break;			}		}	}	else	{		// check descending order		for(int i=1; i<5; ++i)		{			if (a > a[i-1])			{				sorted = false;				break;			}		}	}	if (sorted)		cout << "input array is sorted in ";	else		cout << "input array is not sorted, hint: it should be sorted in ";		cout << (asc? "ascending order.": "descending order.");}

حالات الإختبار و النتائج:

1
2
3
4
5
input array is sorted in ascending order.

5
4
3
2
1
input array is sorted in descending order.

1
3
5
7
2
input array is not sorted, hint: it should be sorted in ascending order.

9
8
10
12
15
input array is not sorted, hint: it should be sorted in descending order.

و الله ولي التوفيق

2

مدونتي: C++ Tips and Tricks

#3

أختي الكريمة حلّك خاطئ , والحل الصحيح هو كما طرح الأستاذ C++er

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

ولكن ما تفسيرك لهذا السطر في برنامجك ؟

if(a<a[i+1]&&a>a[i+1])

كيف سيكون العدد أصغر من عدد آخر , ويكون أكبر في نفس الوقت ؟

 

سأقوم بشرح سريع لكود الأستاذ C++er

كما ذكرت , قد تكون المصفوفة تصاعدية أو تنازلية

نختبر أول عنصرين 0 و 1 , فإذا كان العنصر 0 أصغر من العنصر 1 , فالمصفوفة قد تكون تصاعدية ... (قد) لذلك نضع المتحول asc اختصار ascending للدلالة على اختبار أول عنصرين

وسنفترض أن المصفوفة مرتبة في البداية ونضع sorted=true

    // is array should be in ascending order?
    bool asc = a[0] < a[1];
    // array is sorted
    bool sorted = true;

اذا كان أول عنصرين يحققان الترتيب التصاعدي , سنتابع اختبار الترتيب التصاعدي بشكل عادي

وهو باختبار كل عنصرين متجاورين ضمن حلقة بسيطة

    if (asc)    {        // check ascending order        for(int i=1; i<5; ++i)        {            if (a < a[i-1])            {                sorted = false;                break;            }        }    }

أما لو كان العنصران لا يحققان الترتيب التنازلي , بالتالي المصفوفة ككل لا يمكن أن تكون مرتبة تصاعدياً , سنختبر الترتيب التنازلي

    else    {        // check descending order        for(int i=1; i<5; ++i)        {            if (a > a[i-1])            {                sorted = false;                break;            }        }    }

بعد انتهاء الاختبارين , سيكون sorted إما true إن كان أحد الاختبارين نجح , أو false إذا فشل كلا الاختبارين

    if (sorted)
        cout << "input array is sorted in ";
    else
        cout << "input array is not sorted, hint: it should be sorted in ";
    
    cout << (asc? "ascending order.": "descending order.");
}

 

والله ولي التوفيق

2
#4

thank U so so much

I solved it without using function

:)

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

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