PDA

View Full Version : مبتدی: پیدا کردن کلیه همسایه های یک درایه در ماتریس



کارآموز کوچک
جمعه 18 اردیبهشت 1394, 19:49 عصر
سلام دوستان
من پروژه ای درباره آرایه ها و ماتریس دارم.
برنامه اینطوری هست که یک ماتریس دارم که به صورت تصادفی با حروف انگلیسی مقداردهی میشود.
کاربر مختصات یک نقطه رو وارد میکند. من باید مقدار آن درایه رو حذف کنم و مساوی فاصله قرار دهم.
مشکل من اینجاست که باید کلیه همسایه های درایه ورودی که مقادیرشان با درایه ورودی برابر است برابر فاصله شود.(منظور از همسایه یعنی فقط درایه های بالا، پایین، راست و چپ درایه ورودی است)حالا باید همین روش رو روی همسایه های درایه ورودی(درایه بالا،پایین،راست و چپ) انجام داد تا جایی که نتونیم درایه ای رو پیدا کنیم که مقدارش برابر درایه ورودی بوده و جزء همسایه های آن باشد.

ممنون میشم اگه راهنماییم کنید.
چون خیلی بهش احتیاج دارم.

RmeXXXXXXXXX
شنبه 19 اردیبهشت 1394, 17:31 عصر
خیلی گنگ بود!

کارآموز کوچک
شنبه 19 اردیبهشت 1394, 18:19 عصر
منظورم از پیدا کردن همسایه اینه که اول محتویات نقطه ای که کاربر وارد میکنه رو را برابر فاصله قرار میدهیم.حالا محتویات نقطه بالایی این درایه که کاربر وارد کرده اگر برابر با اون(اون:مختصات نقطه ای که کاربر وارد کرده) بود باید برابر فاصله شود. همین کار رو روی خونه های پایین، راست و چپ انجام میدیم.بعد از این همین کارهایی که انجام دادیم روی درایه بالایی خونه ای که کاربر وارد کرده رو انجام میدیم یعنی باید درایه های بالایی و پایینی و چپ و راست درایه بالایی که کاربر وارد کرده را بررسی کنیم که اگه محتویاتشان برابر بود برابر فاصله شود. این کار رو تا جایی انجام میدیم که ماتریس تمام شود یا دیگه هیچ همسایه ای پیدا نکنیم که محتویاتش برابر با درایه ای که کاربر وارد کرده باشد.

محمد آشتیانی
شنبه 19 اردیبهشت 1394, 21:25 عصر
سلام
شما خودتون تا کجا پیش رفتید؟ یعنی کدی که نوشتید رو اینجا قرار بدید برای همکاری دوستان و رفع اشکال.

کارآموز کوچک
یک شنبه 20 اردیبهشت 1394, 12:12 عصر
سلام
من چون هنوز با همسایه ها مشکل دارم و نمیدونم دقیقا از کجا باید شروع کنم نتونستم کدی براش بنویسم.
اما یه نظر دارم اینکه از خونه اول (سطر به سطر یا ستون به ستون) شروع کنیم به گشتن خونه هایی که محتویاتشون برابر با محتویات خونه ای باشه که کاربر وارد کرده و مقدار اون خونه ها رو برابر فاصله کنیم.
میخوام بدونم آیا اینکاری میکنم درسته یا نه؟

کارآموز کوچک
پنج شنبه 07 خرداد 1394, 18:55 عصر
من برایش کدی نوشتم.
چطوری میتونم بهتر از این بنویسم؟

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace project2_2
{
class Program
{
static void Main(string[] args)
{
string rep;


Console.WriteLine("Enter the number of rows of the matrix: ");
int n = int.Parse(Console.ReadLine());
Console.WriteLine("Enter the number of columns of the matrix: ");
int m = int.Parse(Console.ReadLine());
char[,] q = new char[n, m];
Random r = new Random();
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
q[i, j] = (Char)r.Next(97, 123);
}
}
Console.WriteLine("----------------------------------------------");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
Console.Write("| {0}", q[i, j]);
}
Console.WriteLine();
}
Console.WriteLine("----------------------------------------------");
do
{
Console.WriteLine("Enter the coordinates of the row point: ");
int a = int.Parse(Console.ReadLine());
Console.WriteLine("----------------------------------------------");
while(a>=n)
{
Console.WriteLine("ERROR: rows={0}...Input is greater or equal than the number of rows", n);
Console.WriteLine("Enter the coordinates of the row point: ");
a = int.Parse(Console.ReadLine());
Console.WriteLine("----------------------------------------------");
}
Console.WriteLine("Enter the coordinates of the column point: ");
int b = int.Parse(Console.ReadLine());
Console.WriteLine("----------------------------------------------");
while(b>=m)
{
Console.WriteLine("ERROR: column={0}...Input is greater or equal than the number of column", m);
Console.WriteLine("Enter the coordinates of the column point: ");
b = int.Parse(Console.ReadLine());
Console.WriteLine("----------------------------------------------");
}
char t = '-';
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (i == a && j == b )
{
t = q[i, j];
q[i, j] = '-';
}
}
}
bool[,] temp = new bool[n, m];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
temp[i, j] = false;
if (i == a && j == b)
{
temp[i, j] = true;
}
}
}
string [] s = new string[1];
string ta = " ";
string tb = " ";
ta = Convert.ToString(a);
tb = Convert.ToString(b);
s[0] = ta+","+tb;
int z = 0;
string ts = " ";
while (z < s.Length)
{
ts = s[z];
ta =(ts.Substring(0,ts.IndexOf(",")));
a = int.Parse(ta);
tb =(ts.Substring(ts.LastIndexOf(",")+1));
b = int.Parse(tb);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (i == (a + 1) && j == b)
{
if (t == q[i, j] && temp[i, j] == false)
{
temp[i, j] = true;
q[i, j] = '-';
Array.Resize(ref s, s.Length + 1);
ta = Convert.ToString(i);
tb = Convert.ToString(j);
s[s.Length - 1] = ta + "," + tb;
}
}
if (i == (a - 1) && j == b)
{
if (t == q[i, j] && temp[i, j] == false)
{
temp[i, j] = true;
q[i, j] = '-';
Array.Resize(ref s, s.Length + 1);
ta = Convert.ToString(i);
tb = Convert.ToString(j);
s[s.Length - 1] = ta + "," + tb;
}
}
if (i == a && j == (b+1))
{
if (t == q[i, j] && temp[i, j] == false)
{
temp[i, j] = true;
q[i, j] = '-';
Array.Resize(ref s, s.Length + 1);
ta = Convert.ToString(i);
tb = Convert.ToString(j);
s[s.Length - 1] = ta + "," + tb;
}
}
if (i == a && j == (b-1))
{
if (t == q[i, j] && temp[i, j] == false)
{
temp[i, j] = true;
q[i, j] = '-';
Array.Resize(ref s, s.Length + 1);
ta = Convert.ToString(i);
tb = Convert.ToString(j);
s[s.Length - 1] = ta + "," + tb;
}
}
}
}
z++;
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
Console.Write("| {0}", q[i, j]);
}
Console.WriteLine();
}
Console.WriteLine("----------------------------------------------");
Console.WriteLine("Do you want to continue: ( y / n)");
rep = Convert.ToString(Console.ReadLine());
Console.WriteLine("----------------------------------------------");
} while (rep == "y" || rep == "Y");
Console.WriteLine("Press the button to exit ....");
Console.ReadLine();
}
}
}