PDA

View Full Version : پیدا کردن کوچکترین عدد بزرگتر از یک در یک ماتریس دو بعدی



Fire_Falcon
پنج شنبه 03 آذر 1390, 11:39 صبح
من میخوام یه ماتریس دو بعدی تولید کنم که قطر اصلیش صفر باشه و عناصر بالای قطر اصلی با اونایی که زیر قطر اصلی هست یکی باشه
میخوام کوچیک ترین عدد تو سطر اول رو پیدا کنه و عدد در هر ستونی باشه در ادامه جستجو به اون سطر بره

| 0 142 75 20|
|142 0 124 41|
| 75 124 0 24|
| 20 41 24 0|
مثلا تو این ماتریس عدد 20 رو انتخاب کنه و چون تو ستون 4 این عدد پیدا شده بره تو سطر چهارم دنبال عدد بعدی بگرده و به قبل بر نگرده
من تو تولید این ماتریس مشکل ندارم فقط این جستجو و ذخیره کردن رو نمیدونم چطور پیاده سازی کنم

Fire_Falcon
پنج شنبه 03 آذر 1390, 17:19 عصر
این کدی هست که من نوشتم
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication27
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int[] xrange = new int [100];
int[] yrange = new int[100];
double [,] xyrange = new double [100, 100];
int i = 0;
int sum1;
int sum2;
double jazr;
private void Form1_Load(object sender, EventArgs e)
{

}

private void Form1_MouseClick(object sender, MouseEventArgs e)
{
xrange[i] = e.X;
yrange[i] = e.Y;
Label label1 = new Label();
Point p = new Point();
p.X = xrange[i];
p.Y = yrange[i];
label1.Location = p;
label1.Text = "" + i;
this.Controls.Add(label1);
i++;
}

private void button1_Click(object sender, EventArgs e)
{

label2.Text="";
label1.Text = "";

for (int j = 0; j < i; j++)
{

for (int n =0; n < i; n++)
{
if (xrange[j] == xrange[n])
{
xyrange[j,n] = 0;
}
else
{
sum1 = xrange[j] - xrange[n];
sum1 = sum1 * sum1;
}
if (yrange[j] == yrange[n])
{
xyrange[j,n] = 0;
}
else
{
sum2 = yrange[j] - yrange[n];
sum2 = sum2 * sum2;
}

jazr = Math.Sqrt(sum1 + sum2);
xyrange[j, n] = jazr ;
// label1.Text = label1.Text + "j" + j + "n" + n +" => "+ xyrange[j,n].ToString() + "\n";
sum1 = 0;
sum2 = 0;
jazr = 0;
}
}
int x1, y1 = 0;
int s1;
double select1 = 1;
double select2 = 1;
for (x1 = 0; x1 < i; x1++)
{
for (y1 = 0; y1 < i; y1++)
{

????????????????????????????????
}
}



}

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
label3.Text = "" + e.X.ToString() + "," + e.Y.ToString();
}
}
}


تو قسمت حلقه فور که علامت سوال گذاشتم رو نمیدونم باید چی بنویسم تا این کار ماتریس رو برام انجام بده

omidh2007
پنج شنبه 03 آذر 1390, 21:14 عصر
چون گفتی توی مقدار دهیش مشکلی نداری ، فقط پیدا کردن عدد مینیمم رو توش نوشتم .


int n = 10;
int min = int.MaxValue;
int [,] A = new int[n , n];

// پیدا کردن کوچکترین عدد
for (int row = 0; row < n; row++)
{
for (int column = 0; column < n; column++)
{
if (A[row, column] < min & A[row, column] > 1) min = A[row, column];
}
}
Console.WriteLine("Minimum number in Matrix is : {0}", min);
Console.Read();