שאלה מענינת במערך חד מימדי ב ++C

benny++C, ArraysLeave a Comment

 

  1. כתוב תכנית אשר תקלוט למערך בשם numbers שישה ערכים שהם שברים עשרוניים חיוביים (כלומר – מספרים בין 0 ל-1, לא כולל 0 ו-1).

ניתן להניח כי כל ערכי הקלט שונים זה מזה.
על התכנית ליצור מערך חדש בשם indices, שבו יופיעו הערכים הסידוריים של איברי המערך  numbers . סדר הערכים במערך indices יקבע על פי הערכים המתאימים במערך numbers  ממויינים בסדר עולה.
כלומר:
המקום הראשון במערך indices, יכיל את מספרו הסידורי (האינדקס) של האיבר הקטן ביותר במערך numbers. המקום השני יכיל את אינדקס המספר השני בקוטנו, וכן הלאה – עד שהמקום האחרון במערך החדש indices יכיל את האינדקס של המספר הגדול ביותר במערך numbers.
לדוגמא: עבור המערך numbers  הבא:
numbers = {0.5, 0.95, 0.1, 0.7, 0.19, 0.86}
האיבר הראשון במערך החדש יהיה 2, מאחר שnumbers[2]=0.1  הוא האיבר הקטן ביותר. האיבר השני יהיה 4, כי השני בקוטנו הוא 0.19 numbers[4] =, האיבר הבא יהיה 0 וכן הלאה.
על התכנית להדפיס את איברי המערך indices.
הערה: אם הקלט אינו תקין (נקלט מספר שאינו בין 0 ל- 1), יש להוציא הודעת ERROR  ולקלוט מחדש את כל 6 המספרים אחרי המספר שאינו תקין.

 דוגמת הרצה:

enter  6 numbers between 0 and 1:

0.3 0.2  0.4 0.1 0.05 0.9

sorted indices:

1 2 4 5 3 0

דוגמא נוספת:

enter  6 numbers between 0 and 1:

0.9 0.5 2.70.3 0.2  0.4 0.1 0.05 0.9

sorted indices:

ERROR

1 2 4 5 3 0

 

 

פתרון:   קוד 1.  לחץ כאן להורדת הקוד

שלב 1

תרגיל בית 6 שאלה 4 תמונה 1

שלב 2

תרגיל בית 6 שאלה 4 תמונה 2

 

שלב 3

 

 

תרגיל בית 6 שאלה 4 תמונה 3

#include <iostream>
#include <string>
using namespace std;
int main()
{
	float numbers [6];   
	int i, small=0, size=6, makom_1=0,makom_2,makom_3,makom_4,makom_5,makom_6;

	cout <<"enter  6 numbers between 0 and 1:"<<endl;



	for ( i = 0; i < 6; i++)
	{
		cin>>numbers[i];
		if (numbers[i]<=0 || numbers[i]>=1)
		{
			cout<<"ERROR"<<endl;
			i=-1;
		}
	}



	for (int k = 0; k < 6; k++)
	{
			for (int i = 0; i < 6; i++)
			{
					for (int j = 0; j < 6; j++)
					{
						
						if(numbers[i]<numbers[j])
						{
							small+=1;
						}
						
					}
					if (small==size-1)
						{
							//.3cout << "an["<<i <<"]"<<" small then: "<<small<<"  others"<<"  "<<size<< endl<< endl;
							if (size==6)
							{
								makom_1=i;
							}
							if (size==5)
							{
								makom_2=i;
							}
							if (size==4)
							{
								makom_3=i;
							}
							if (size==3)
							{
								makom_4=i;
							}
							if (size==2)
							{
								makom_5=i;
							}
							if (size==1)
							{
								makom_6=i;
							}
							size-=1;
						}
	
				small=0;
			} 
	}



	//cout << makom_1<<makom_2<<makom_3<<makom_4<<makom_5<<makom_6<<endl;

	int indices [6]={makom_1,makom_2,makom_3,makom_4,makom_5,makom_6};
	cout <<"sorted indices:"<<endl;
	for (int i = 0; i < 6; i++)
	{
		cout<<indices[i]<<" ";   
	}
	

	system ("pause");
	return 0;
}

 

 

תרגיל 6 שאלה 4

כתיבת תגובה

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