מיון בועות במערך דו מימדי

benny++C, Arrays, for loop, UncategorizedLeave a Comment

  1. על התכנית לקלוט מהמשתמש עשר מילים, כל אחת בת 5 אותיות. התכנית תציב את האותיות במטריצה בגודל 10*5 (10 שורות, בכל שורה מילה, תו אחרי תו). על התכנית למיין את המילים בתוך המטריצה, באופן מילוני (לקסיקוגרפי – כלומר, ע"פ סדר הופעתן במילון/לקסיקון). על התכנית להדפיס את המטריצה הממוינת.

הערה: מותר להניח שהקלט הוא תקין, כלומר שיש בדיוק 10 מילים וכל מילה בעלת 5 אותיות.

האלגורתם של מיון צריך להופיע בפונקציה נפרדת.

 

דוגמת הרצה:

enter 10 words:

house apple teach array teach books point float apply begin

after sorting:

apple apply array begin books float house point teach teach


/*************************
discription: gets 5 words into a matrix of 10 by 5 and sorts the words According the ABC.
**************************/
#include <iostream>
using namespace std;

void sortedWords(char wordsArray[])
{

	char temp[5];
	int i;
	for (int r = 0; r < 9; r++)
	{
		for ( i = 0; i < 45; i+=5)
		{
			if (wordsArray[i]>wordsArray[i+5])
			{
				for (int j = i,k=0; k < 5; k++,j++)
					{
						temp[k]=wordsArray[j+5];

					}
				
					for (int k = 0,j=i; k < 5; k++,j++)
					{
						wordsArray[j+5]=wordsArray[j];
					}


					for (int k = 0 ,j = i;  k < 5;  k++,j++)
					{
						wordsArray[j]=temp[k];

					}
				
			}		

		}

	}

	int b;

	for (int a = 0; a < 9; a++)
	{
		for ( b = 0; b < 45; b+=5)
		{
			if (wordsArray[b]==wordsArray[b+5])
			{
				if (wordsArray[b+1]==wordsArray[b+6])
				{
					if (wordsArray[b+2]==wordsArray[b+7])
					{
						if (wordsArray[b+3]==wordsArray[b+8])
						{
							if (wordsArray[b+4]==wordsArray[b+9])
							{

							}
							if (wordsArray[b+4]>wordsArray[b+9])
							{
									for (int j = b,k=0; k < 5; k++,j++)
									{
										temp[k]=wordsArray[j+5];

									}
									for (int k = 0,j=b; k < 5; k++,j++)
									{
										wordsArray[j+5]=wordsArray[j];
									}
									for (int k = 0 ,j = b;  k < 5;  k++,j++)
									{
										wordsArray[j]=temp[k];

									}
							}
						}
						if (wordsArray[b+3]>wordsArray[b+8])
						{
							for (int j = b,k=0; k < 5; k++,j++)
							{
								temp[k]=wordsArray[j+5];

							}
							for (int k = 0,j=b; k < 5; k++,j++)
							{
								wordsArray[j+5]=wordsArray[j];
							}
							for (int k = 0 ,j = b;  k < 5;  k++,j++)
							{
								wordsArray[j]=temp[k];

							}
						}
					}
					if (wordsArray[b+2]>wordsArray[b+7])
					{
						for (int j = b,k=0; k < 5; k++,j++)
					{
						temp[k]=wordsArray[j+5];

					}
					for (int k = 0,j=b; k < 5; k++,j++)
					{
						wordsArray[j+5]=wordsArray[j];
					}
					for (int k = 0 ,j = b;  k < 5;  k++,j++)
					{
						wordsArray[j]=temp[k];

					}
					}
				}
				if (wordsArray[b+1]>wordsArray[b+6])
				{
					for (int j = b,k=0; k < 5; k++,j++)
					{
						temp[k]=wordsArray[j+5];

					}
					for (int k = 0,j=b; k < 5; k++,j++)
					{
						wordsArray[j+5]=wordsArray[j];
					}
					for (int k = 0 ,j = b;  k < 5;  k++,j++)
					{
						wordsArray[j]=temp[k];

					}
				}
			}
		}
	}
}
int main()
{
	cout <<"enter 10 words:"<<endl;
	char words[10][5];

	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < 5; j++)
		{
			cin>>words[i][j];
		}
	}
		cout <<"after sorting:"<<endl;



	char wordsArray[50]; int u=0;

	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < 5; j++)
		{
			wordsArray[u]=words[i][j];
			u++;
		}
	}

	sortedWords(wordsArray);
	
	for (int i = 0,space=1; i < 50; i++,space++)
	{
		cout<<wordsArray[i];
		if (space%5==0)
		{
			cout<<" ";

		}	
	}

	cout<<endl;
	//system ("pause");
	return 0;
}
/***********output**********
enter 10 words:
house apple teach array teach books point float apply begin
after sorting:
apple apply array begin books float house point teach teach
**********************************/

כתיבת תגובה

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