منبع اصلی نوشتار زیر در این لینک قرار دارد

نقطه ی زین اسبی – آرایه های دو بعدی پویا در سی پلاس پلاس

images نقطه ی زین اسبی   آرایه های دو بعدی پویا در سی پلاس پلاس

نقطه ی زین اسبی در برنامه نویسی مشابه نقطه ی زین اسبی در ریاضات است که همه اسم آن را در ریاضی عمومی ۲ میشنوند.

نقطه ی زین اسبی در برنامه نویسی (saddle point):  به زبان ساده  اگر در یک آرایه ی دو بعدی (ماتریس) نقطه ای داشته باشیم که در سطر خودش کمترین مقدار و در ستون خودش بیشترین مقدار را داشته باشد آن را نقطه ی زین اسبی میگویند.

برای مثال عدد ۳ که با *مشخص شده,  نقطه ی زین اسبی است.

۱   ۲   ۳    ۲

۵   ۵   ۴  *۳

۲   ۰   ۱   ۲

نکته: یک ماتریس ممکن است نقطه ی زین اسبی نداشته باشد یا بیش از یکی داشته باشد پس در تشخیص نقطه ی زین اسبی باید تمام نقاط بررسی شوند.

هدف از ارائه ی این سوال آشنایی با آرایه ی دوبعدی پویا و تابع است.

ورودیهای تابع به ترتیب اشاره گر به ابتدای آرایه ی دو بعدی, اندازه ی ابعاد آرایه و طول و عرض نقطه ای که زین اسبی بودن آن را بررسی میکنیم.

یعنی روش حل به این شکل است که به ازای هر i و j  که به عنوان دو ورودی در آرگومان تابع قرار میگیرند مینیمم بودن مقدار در سطر i ام و ماکزیمم بودنش در ستون j ام بررسی میشود.

#include <iostream>
using namespace std;
int issaddle(int **table, int x, int y, int i, int j)
{
	bool is_max=true, is_min=true;
	for (int k = 0; k < y; k++)
	{
		if (table[i][k] < table[i][j])
		{
			is_min = false;
			return 0;
		}
	}
	for (int k = 0; k < x; k++){
		if (table[k][j] > table[i][j])
		{
			is_max = false;
			return 0;
		}
	}
	return 1;
}
int main(void){
	int **table;
	bool none = true;
	int x, y;
	cout<<"Enter dimensions:"<<endl<<"x= ";
	cin>>x;
	cout<<"y= ";
	cin>>y;
	table = new int * [x];
	for (int i = 0; i < x; i++)
	{
		table[i] = new int [y];
	}
	cout<<"enter the values in turn using space between them."<<endl;
	for (int i = 0; i < x; i++)
	{
		for (int j = 0; j < y; j++)
		{
			cin>>table[i][j];
		}
	}
	cout<<endl<<"----------"<<endl;
	for (int i = 0; i < x; i++)
	{
		for (int j = 0; j < y; j++)
		{
			if (issaddle(table, x, y, i, j)==1)
			{
				cout<<"table["<<i<<"]["<<j<<"]="<<table[i][j]<<endl;
				none = false;
			}
		}
	}
	if (none)
	{
		cout<<"there is no saddle point in the table."<<endl;
	}
	cin.get();
}

 

digg نقطه ی زین اسبی   آرایه های دو بعدی پویا در سی پلاس پلاس  reddit نقطه ی زین اسبی   آرایه های دو بعدی پویا در سی پلاس پلاس  stumbleupon نقطه ی زین اسبی   آرایه های دو بعدی پویا در سی پلاس پلاس  yahoo buzz نقطه ی زین اسبی   آرایه های دو بعدی پویا در سی پلاس پلاس  dzone نقطه ی زین اسبی   آرایه های دو بعدی پویا در سی پلاس پلاس  facebook نقطه ی زین اسبی   آرایه های دو بعدی پویا در سی پلاس پلاس  delicious نقطه ی زین اسبی   آرایه های دو بعدی پویا در سی پلاس پلاس  dotnetkicks نقطه ی زین اسبی   آرایه های دو بعدی پویا در سی پلاس پلاس  dotnetshoutout نقطه ی زین اسبی   آرایه های دو بعدی پویا در سی پلاس پلاس  linkedin نقطه ی زین اسبی   آرایه های دو بعدی پویا در سی پلاس پلاس  technorati نقطه ی زین اسبی   آرایه های دو بعدی پویا در سی پلاس پلاس  twitter نقطه ی زین اسبی   آرایه های دو بعدی پویا در سی پلاس پلاس  google buzz نقطه ی زین اسبی   آرایه های دو بعدی پویا در سی پلاس پلاس  



برچسب ها :