تولید ماتریس 3*3 از اعداد تصادفی

iceweek

عضو جدید
کد تولید ماتریس 3*3 با اعداد تصادفی بین 0 تا 8 را کسی میتونه بنویسه؟عددها تکراری نباشن
 

S H i M A

کاربر فعال تالار شیمی
کاربر ممتاز
کد تولید ماتریس 3*3 با اعداد تصادفی بین 0 تا 8 را کسی میتونه بنویسه؟عددها تکراری نباشن


1- یه struct شامل یه ماتریس 3 در 3، و یه اشاره گر به ساختارتون بسازید.

2- یه لیست اولویت دار بسازید و برای شروع یه سر لیست براش درست کنید.

3- یه شیء از نوع ساختارتون ساخته و فیلد ماتریس 3 در 3 رو بصورت تصادفی

با اعداد 0 تا 8 پر کنید (0 به عنوان خانه خالی) و اشاره گر رو هم NULL قرار بدید.

آدرس شیء جدید رو توی فیلد اشاره گر سر لیستتون بزارید.

4- فاصله منهتن جدول رو بدست بیارید (این کار با محاسبه فاصله هر عدد نسبت

به مکان واقعی اون و جمع فواصل بدست میاد. نحوه محاسبه فاصله عدد نسبت

به مکان واقعی چند روش ساده داره که حتما از پسش بر میاید.)

5- شیء رو از لیست خارج کنید و با توجه به این که خانه خالی کجای جدول قرار

داره، خانه های اطراف رو حرکت بدید و برای هر جدول جدید فاصله منهتن رو

محاسبه کرده و طبق عددی که بدست میاد، اونو توی لیست اولویت قرار بدید.

6- اگر فاصله منهتن با اولویت ترین عضو لیست صفر بود، جواب پیدا شده وگرنه

عملیات 4 تا 6 رو تکرار کنید.
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
دوست عزیز بدون ساختار هم میشه. یک ماتریس 3*3 تعریف کنید و با استفاده از دو حلقه تو در تو آن را مقدار دهی کنید. تابع Random دات نت عددی تصادفی بین 0 تا 1 تولید می کنه که اگر در 8 ضرب کنید نتیجه را عددی بین 0 تا 8 به شما خواهد داد.
 

iceweek

عضو جدید
دوست عزیز بدون ساختار هم میشه. یک ماتریس 3*3 تعریف کنید و با استفاده از دو حلقه تو در تو آن را مقدار دهی کنید. تابع Random دات نت عددی تصادفی بین 0 تا 1 تولید می کنه که اگر در 8 ضرب کنید نتیجه را عددی بین 0 تا 8 به شما خواهد داد.
من با استفاده از random.next تولید اعداد تصادفی کردم و با استفاده از 2 تا حلقه مقدار هارا دادم ولی برای تکراری نبودن اعداد تصادفی نمیدونم چکار باید کرد
 

iceweek

عضو جدید
تونستم حلش کنم.برای کسایی که احیانا علاقه دارن کدشو میگذارم.البته اینجا کپی کردم بهم ریختست یکم

Random random = new Random();
int[,] a = new int[3,3]{{10,10,10},{10,10,10},{10,10,10}};
for(int j=0;j<3;j++)
for (int i = 0; i < 3;)
{
int n=(int)random.Next(0, 9);
int r=0;
foreach (int k in a)
{
if (k == n)
{
r++;
}
}
if (r == 0)
{
a[i, j] = n;
i++;

}
}
 

Similar threads

بالا