חיפוש איבר בתוך מערך

bennyArraysLeave a Comment

    • א. כתוב פונקציה המממשת את האלגוריתם בסביבת העבודה. הפונקציה מקבלת מערך ממוין בסדר עולה, גודל המערך ומשתנה נוסף. במידה והערך הנוסף קיים במערך, הפונקציה תחזיר את המיקום (אינדקס) של איבר זה. במידה והערך הנוסף לא נמצא במערך, הפונקציה תחזיר את הערך -1.
      תזכורת: אינדקס האיבר הראשון במערך הינו 0.
    • ב. כתוב תכנית ראשית המשתמשת בפונקציה שכתבת בסעיף א, כדלהלן:
      על התכנית לקלוט למערך – 10 מספרים שלמים ממוינים בסדר עולה (שים לב: סדר עולה, ללא כפילויות). על התכנית לקלוט מספר נוסף.
      במידה והערך נמצא במערך, התכנית תדפיס הודעה:
      the number X was found at index Y – כאשר X, Y  הם המספר הנוסף והאינדקס שלו – בהתאמה.
      במידה והמספר אינו קיים במערך, התכנית תדפיס: not found.

 

הערה: אם הקלט אינו תקין (המספרים שנקלטו למערך אינם בסדר עולה בלי כפילויות), יש להוציא הודעת ERROR  ולקלוט מחדש את כל המספרים של המערך.

 

 

 

דוגמאות הרצה:

enter 10 numbers:

1 3 5 5 9 11 13 15 17 19

ERROR

1 3 5 2 9 11 13 15 17 19

ERROR

1 3 5 7 9 11 13 15 17 19

enter 1 number:

5

the number 5 was found at index 2

enter 10 numbers:

1 3 5 7 9 11 13 15 17 19

enter 1 number:

12

not found

</pre>
<pre dir="ltr">
#include &amp;lt;iostream&amp;gt;
using namespace std;

void binarSearch(int array[], int len, int n)
{

	int  low = 0, high = len - 1, mid, result = -1;

	while (low &amp;lt;= high)
	{
		mid = (low + high) / 2;       
		if (n == array[mid])
		{
			result = mid;
			cout &amp;lt;&amp;lt; "the number  " &amp;lt;&amp;lt; n &amp;lt;&amp;lt; " was found at index:" &amp;lt;&amp;lt; result &amp;lt;&amp;lt; endl; break; } else { if (n&amp;gt;array[mid])
			{
				low = mid + 1;
			}
			else
			{
				high = mid - 1;
			}
		}
	}

	if (result == -1)
	{
		cout &amp;lt;&amp;lt; "not found" &amp;lt;&amp;lt; endl;
	}



}


int main()
{
	int arr[10], size = 0, number_x,m=0 ;

	cout &amp;lt;&amp;lt; "enter 10 numbers:" &amp;lt;&amp;lt; endl;

	do
	{
		m = 0;
		for (int i = 0; i &amp;lt; 10; i++) { cin &amp;gt;&amp;gt; arr[i];
			size++;
			if (arr[i]&amp;lt;=arr[i-1])
			{
				m = 1;
			}
			
		}
		if (m == 1)
		{
			cout &amp;lt;&amp;lt; "ERROR" &amp;lt;&amp;lt; endl;
			size = 0;
			
		}

	} while (m==1);




	cout &amp;lt;&amp;lt; "enter 1 number:" &amp;lt;&amp;lt; endl; cin &amp;gt;&amp;gt; number_x;


	binarSearch(arr, size, number_x);





	system("pause");
	return 0;

}


כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *